0

我希望我的用户能够使用 Markdown 进行评论并避免 XSS。

正确的行动顺序是什么?

这是我对其工作原理的理解:

user input via HTML form using Markdown syntax
$Input = markdown(mysql_real_escape_string($_POST['userInput']));
insert $input into database

然后,我还需要使用 htmlspecialchars 吗?

4

2 回答 2

0

mysql_real_escape_string用于避免 SQL INJECTION。因为它转义了 SQL。

一起使用 strip_tags()、preg_match() 和 htmlspecialchars() 可以避免 XSS

XSS 基于包含漏洞利用的 html 标签。例如 java 脚本中的脚本,或重定向,或在标签中打开文件。

strip_tags() 删除 html 标签。还有一个更有趣的函数叫做

htmlspecialchars() 用于防止 XSS。

防止sql注入攻击最重要的事情

  1. 使用 preg_match 进行数据验证
  2. 使用 strip_tags 进行数据清理
  3. 使用 htmlspecialchars 进行输出转义

因此,首先您应该验证数据,然后对其进行清理,最后使用 htmlspecialchars 对其进行转义。

于 2013-05-06T11:23:28.973 回答
0

转义应该是在将数据插入数据库之前做的最后一件事。运行markdown,或此时其上的任何其他功能,为时已晚。

其次,HTML 转义和 Markdown 转换是一个显示问题,不应影响写入数据库的内容。在呈现 HTML 页面时执行这些功能,而不是之前。数据库应该包含原始降价,而不是 HTML 版本。

于 2013-05-06T11:24:00.380 回答