我正在做一个类似Web应用程序的论坛。允许用户向服务器提交丰富的html文本,例如p标签,div标签等。为了保持格式,服务器会将这些标签直接写回到用户的浏览器中(不进行html编码)。因此,我必须做一个潜在的危险脚本检查以避免XSS。任何JavaScript代码都应该是危险的,并且不被允许。那么,如何检测它们或任何其他更好的解决方案?
危险示例1:
<script>alert('1')</script>
危险示例2:
<script src="..."></script>
危险示例3:
<a href="javascript:dangerousFunction();">click me</a>
您的要求很简单:
<script>
标签,但要保留某些丰富的HTML标签。处理所有这些问题的正确方法是采用符合现代标准的HTML解析器,该语法分析器可以语法分析发送过来的丰富HTML的结构,识别发送过来的标签并发现属性中的原始值。实际上,正如评论之一所提到的,这是如何进行卫生处理的。
有许多预先存在的HTML解析器,其目的是针对XSS不安全的输入。例如,该npm
库js-xss
似乎能够完全满足您的要求:
您甚至可以将此服务器端作为命令行实用程序运行。
大多数语言已经存在类似的库,因此您应该彻底搜索首选语言的程序包存储库。或者,您可以启动子流程并直接js-xss
从命令行收集结果。
避免使用正则表达式幼稚地解析HTML-尽管确实的确,大多数HTML解析器最终都在内部使用了正则表达式,但对于正确定义语法后,对于严格定义好的语法,它们以相当有限的方式使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句