我计划将用户评论存储在数据库中,并且想知道如何存储用户将提供的原始文本,因为它可以包含任何内容。对此有什么共同/良好做法?我是否需要解析文本或是否存在我应该使用的特殊存储类型?解析用户评论似乎有很多开销可能会很长,而且我不想篡改消息的预期含义等。在同一个评论/论坛帖子中处理它似乎很奇怪庄园称用户名/密码并消毒。
我使用sqlite3
和一些脚本来查询数据库,并计划实现以下内容:
page_id post_number username content
------- ----------- -------- -------
1 1 user_23 blah there's blah "quote" blah;':".,-=.
但是,当然,如果我只是将content
param扩展到我的INSERT
查询中,那么' "
等会出现各种问题。
我应该如何处理此表中的content
;它应该像这样在桌子上吗?我应该使用哪种数据类型等。
答案 0 :(得分:1)
为了避免SQL注入攻击,为了使查询字符串的格式化更容易,并且可以处理blob数据,所有数据库都支持parameters。
在Python中,它看起来像这样:
id = 1
text = "blah ..."
cursor.execute("INSERT INTO mytable(id, content) VALUES(?, ?)", (id, text))
答案 1 :(得分:1)
要使用的数据类型取决于输入的整体大小。 文字将是我的第一选择。
有关sqlite3数据类型的更多信息,请参阅 http://www.sqlite.org/datatype3.html
我会推荐你 清理输入,只允许必要的标记。 对内容进行编码,以便可以安全地插入数据库。
如果安全性是一个严重问题,那么这个处理应该在服务器端完成。将一些处理负载放到javascript上也不会有害,这将减少在服务器上完成的工作。它仍会抓住用户试图规避该功能。
答案 2 :(得分:0)
我没有进入python,但你的数据库驱动程序是不是已经处理好了?否则,您必须手动替换转义那些字符。