我想知道如何让用户像在MySpace上一样使用PHP和MySQL安全地输入HTML和CSS到这些配置文件。
答案 0 :(得分:6)
您当然希望仔细清理数据并将其限制为一组“无害”声明。例如。 http://htmlpurifier.org/可以帮助您。
HTML Purifier符合标准 编写的HTML过滤器库 PHP。 HTML Purifier不仅会删除所有恶意内容 代码(更好地称为XSS)经过全面审核, 安全而宽松的白名单, 它还将确保您的文件 符合标准
当您将数据放入数据库时,请使用prepared statements或小心地转义数据。
答案 1 :(得分:2)
至少要考虑两件事:
首先,您必须避免SQL injections 。
这可以通过转义字符串数据,然后将其插入到插入查询中,使用mysql_real_escape_string
,mysqli_real_escape_string
或PDO::quote
等函数来完成,具体取决于您的API使用
另外,您可能对准备好的陈述感兴趣;请参阅PDO::prepare
或mysqli_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有效。