阻止xss但允许所有html标记

时间:2012-03-22 16:59:42

标签: php html tags xss

我正在建立一个博客,目前正在完成管理面板。

因为我将主要管理它...我想确保当我输入

<ul>
   <li>test</li>
   <li>test</li>
</ul>

会显示无序列表,但也会阻止XSS标记以防万一...

我怎么能这样做?

解决方案可以创建函数并替换ulolimg等标记吗?

3 个答案:

答案 0 :(得分:1)

检查此网址 - http://refactormycode.com/codes/333-sanitize-html

该问题还有另一个有用的线程以及如何处理这个问题 - What is the best way to store WMD input/markdown in SQL server and display later?

答案 1 :(得分:1)

在允许HTML的同时处理XSS的标准方法是:

  1. 通过(真实)HTML解析器运行HTML
  2. 删除白名单上没有的任何元素或属性(使用第三方白名单作为起点,对您添加的任何其他元素/属性进行研究,以确保他们没有办法注入你不了解的JS。
  3. 完整性检查任何URI
  4. 从DOM生成干净的HTML
  5. 具体细节取决于您使用的语言。

答案 2 :(得分:1)

您正在寻找的是HTML清洁剂。这些很难正确编写,因此您应该查看现有的库。对于PHP,请查看HTML Purifier

正确的XSS保护涉及的不仅仅是html清理。开放式Web应用程序安全项目(OWASP)已经制定了一个避免XSS攻击的规范指南:

XSS (Cross Site Scripting) Prevention Cheat Sheet