我正在编写一个servlet过滤器来保护站点免受XSS漏洞的攻击。我需要一个可以对HTTPRequest应用的白名单,以便我可以避免任何恶意脚本和字符。
我可以将正则表达式用作白名单吗?我应该使用哪个正则表达式,以便它包含URL的所有字符。任何其他解决方案也是受欢迎的。
请建议我如何为应用程序的URL创建白名单。
提前致谢。
更新 - 请不要标记其投票。在评论中查看我的研究。我已经研究了很多这方面的内容。
答案 0 :(得分:1)
您需要使用真正的HTML解析器来阻止XSS,例如JSoup。不要使用正则表达式。
这是我为Spring Security制作的一个简单的过滤器,它阻止(希望)所有入站XSS:
http://blog.databasepatterns.com/2015/08/simple-inbound-xss-filter-for-spring.html
您可以针对非Spring环境修改它,或允许某些标记,就像Hibernate Validator的@SafeHTML注释一样。
答案 1 :(得分:0)
您可以结合使用ESAPI,JSoup(具有白名单功能)和JSR-303来对抗XSS。
在这里查看我的回复:How to Modify QueryParam and PathParam in Jersey 2