评论系统:安全插入数据库&从数据库中读取

时间:2012-12-23 01:19:10

标签: php mysql security comments system

  

可能重复:
  How to prevent SQL injection?

我正在我的网站上设置评论系统,我想知道这是否保存。我使用PHP和MySQL。 - 不要使用下面的代码,这是非常不安全的 -

制作新评论:

  1. 用户写入$ comment,提交
  2. $ comment = addslashes($ comment);
  3. 将$ comment插入MySQL数据库
  4. 阅读评论:

    1. 用户请求评论,数据库发送$ comment
    2. $ comment = htmlspecialchars(stripslashes($ comment));
    3. echo $ comment;
    4. 系统应该可以防止HTML操作和MySQL注入。还有我不知道的所有其他讨厌的东西。我做得对吗?

      加分问题:我应该在MySQL表格中使用什么排序规则进行$注释?

      编辑:哇我认为我的问题不会导致这个大讨论。谢谢你的所有答案:)

2 个答案:

答案 0 :(得分:10)

考虑从一开始就切换到预备语句: - )

他们现在可能看起来有点过头了,但是你可以安全地担心逃避它所支付的每一个参数。

这是一个很好的教程:http://www.kitebird.com/articles/php-pdo.html

在打印出用户定义的内容时,您仍然需要使用htmlspecialchars来解释XSS的漏洞。

答案 1 :(得分:-5)

使用mysql_real_escape_string(或您的图书馆附带的任何转义功能)代替addslashes

不要使用stripslashes,因为它们已被MySQL解析而被删除,并且您冒着在输入中删除合法反斜杠的风险。

对于整理,请使用您喜欢的任何内容。我更喜欢latin_general_ci,但如果你想要unicode,你应该使用兼容UTF8的排序规则。