PHP& MySQL问题用户提交的数据?

时间:2010-03-28 12:40:50

标签: php mysql

我想知道如何让用户像在MySpace上一样使用PHP和MySQL安全地输入HTML和CSS到这些配置文件。

2 个答案:

答案 0 :(得分:6)

您当然希望仔细清理数据并将其限制为一组“无害”声明。例如。 http://htmlpurifier.org/可以帮助您。

HTML Purifier符合标准   编写的HTML过滤器库   PHP。 HTML Purifier不仅会删除所有恶意内容   代码(更好地称为XSS)经过全面审核,   安全而宽松的白名单,   它还将确保您的文件   符合标准

当您将数据放入数据库时​​,请使用prepared statements或小心地转义数据。

答案 1 :(得分:2)

至少要考虑两件事:

  • 将HTML数据安全地保存到数据库中
  • 在页面上安全地输出HTML数据。


首先,您必须避免SQL injections

这可以通过转义字符串数据,然后将其插入到插入查询中,使用mysql_real_escape_stringmysqli_real_escape_stringPDO::quote等函数来完成,具体取决于您的API使用

另外,您可能对准备好的陈述感兴趣;请参阅PDO::preparemysqli_prepare


对于第二点,重要的是仅允许您认为安全的 的HTML标记和属性。

这可以使用 HTMLPurifier 等工具来完成,以过滤掉所有错误/不接受的标记和属性,并且只保留您允许的子集。


例如,如果您考虑以下HTML输入:

<p>hello, world !</p>
<script type="text/javascript">alert('bad');</script>
<strong>this is <em>some text</strong></em>

HTMLPurifier会将其转换/净化为:

<p>hello, world !</p>
<strong>this is <em>some text</em></strong>

请注意:

  • <script>标记已被删除
  • <em><strong>标记按正确顺序放回,使HTML XHTML有效。