【发布时间】:2012-10-04 05:12:20
【问题描述】:
我计划将用户 cmets 存储在数据库中,并且想知道如何存储用户将提供的原始文本,因为它可能包含任何内容。这方面的常见/良好做法是什么?我需要解析文本还是应该使用特殊的存储类型?解析可能很长的用户 cmets 似乎需要很多开销,而且我不想篡改消息的预期含义等。同时处理评论/论坛帖子似乎很奇怪庄园说一个用户名/密码和消毒。
我正在使用sqlite3 和一些脚本来查询数据库,并计划按照以下方式实现一些东西:
page_id post_number username content
------- ----------- -------- -------
1 1 user_23 blah there's blah "quote" blah;':".,-=.
但是,当然,如果我只是将 content 参数扩展为 INSERT 查询,' " 等就会出现各种问题。
我应该如何处理这个表中的content;它甚至应该在这样的桌子上吗?我应该使用什么数据类型等等。
【问题讨论】:
-
一旦数据在数据库中,它是“安全的”。重要的是插入/更新的机制,以及您在检索时所做的事情。
-
@MarcB:那么,处理帖子/cmets 是正常的吗?我习惯于为用户名/密码而烦恼,但以前没有处理过。我有一半希望有人说“你这个傻瓜,你应该做x”。例如,当我刚刚发布我的问题时,是否解析了我的问题、转义字符并将其作为文本/blob 插入到表格中?
-
基本上,是的。我不知道他们在后端做了什么样的处理,但基本上就是这样。将评论/答案框的内容拉出,转义文本(也许做一些 html 验证/清理),然后将其填充到表格中。
-
请注意,您还需要担心XSS vulnerabilies。不过,它们与数据库无关。
标签: python database sqlite cgi