2

我计划将用户评论存储在数据库中,并且想知道如何存储用户将提供的原始文本,因为它可能包含任何内容。这方面的常见/良好做法是什么?我需要解析文本还是应该使用特殊的存储类型?解析可能很长的用户评论似乎有很多开销,我不想篡改消息的预期含义等。同时处理评论/论坛帖子似乎很奇怪庄园说用户名/密码并进行消毒。

我正在使用sqlite3一些脚本来查询数据库,并计划按照以下方式实现:

page_id    post_number    username    content
-------    -----------    --------    -------
1          1              user_23     blah there's blah "quote" blah;':".,-=.

但是,当然,如果我只是将我的content参数扩展到我的INSERT查询中,将会有各种各样的问题' "等等。

我应该如何处理content这张表中的;它甚至应该在这样的桌子上吗?我应该使用什么数据类型等。

4

3 回答 3

1

为了避免 SQL 注入攻击,使查询字符串的格式化更容易,并使处理 blob 数据成为可能,所有数据库都支持参数

在 Python 中,它看起来像这样:

id = 1
text = "blah ..."
cursor.execute("INSERT INTO mytable(id, content) VALUES(?, ?)", (id, text))
于 2012-10-13T17:31:50.930 回答
1

要使用的数据类型取决于输入的总体大小。文本将是我的第一选择。

有关 sqlite3 数据类型的更多信息,请参见 http://www.sqlite.org/datatype3.html

我建议您清理输入,只允许必要的标记。对内容进行编码,以便安全地插入数据库。

如果安全是一个严重的问题,这个处理应该在服务器端完成。将一些处理负载放到 javascript 上不会有什么坏处,这将减少在服务器上完成的工作。尽管如此,它仍然会捕获试图规避该功能的用户。

于 2012-10-13T17:39:56.203 回答
0

我不喜欢python,但你的数据库驱动程序不是已经处理了吗?否则,您必须手动替换转义这些字符。

看看这个线程: How to string format SQL IN clause with Python

于 2012-10-13T17:27:44.153 回答