1

可能重复:
如何防止 SQL 注入?

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

创建新评论:

  1. 用户写 $comment,提交它
  2. $comment = addlashes($comment);
  3. 将 $comment 插入 MySQL 数据库

阅读评论:

  1. 用户请求评论,数据库交付 $comment
  2. $comment = htmlspecialchars(stripslashes($comment));
  3. 回声$评论;

系统应该能够抵御 HTML 操作和 MySQL 注入。以及我不知道的所有其他讨厌的东西。我做对了吗?

额外问题:我的 MySQL 表中的 $comment 应该使用什么排序规则?

编辑:哇,我认为我的问题不会引起如此大的讨论。谢谢你的所有回答:)

4

2 回答 2

10

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

它们现在可能看起来有点开销,但你有很多时间担心逃避它回报的每一个参数。

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

在打印出用户定义的内容时,您仍然需要使用htmlspecialchars来说明 XSS 的无懈可击性。

于 2012-12-23T01:28:18.847 回答
-5

使用mysql_real_escape_string(或您的库附带的任何转义函数)而不是addslashes.

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

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

于 2012-12-23T01:23:21.887 回答