我正在尝试保护我的 Spring MVC Web 应用程序免受跨站点脚本 (XSS) 攻击。
起初我以为我可以简单地在 web.xml 中设置 defaultHtmlEscape 并完成。但我发现并没有什么效果。如此处所述 - Spring 或 App-Server escape html 无法正常工作 JAVA MVC,defaultHtmlEscape 对输入没有影响。它仅清理 c:out 标记内的输出。
所以我想我应该编写一个过滤器来拦截请求,检查参数,并根据需要清理它们。但是在研究如何编写过滤器时,我遇到了这个 - XSS Filter to enctype="multipart/form-data" forms。它包括建议过滤输入是一个坏主意的评论,并且我应该坚持过滤输出。
有几篇文章提到了 HDIV 和其他第三方安全解决方案,但我不想在我的项目中引入新的第三方依赖项来实现像清理这样的基本功能。
但过滤输出似乎不方便且容易出错。是否所有接触我的 Web 应用程序的开发人员都应该记住对每个 JSP 页面上的每个输出值使用 c:out?全局设置肯定会更好吗?这里的最佳实践是什么?
预先感谢您的建议。
这是一个大问题。没有简单或自动的方法可以做到这一点。团队中的每个开发人员都应该了解这一点的基本方面。最佳实践将包括输入验证和输出转义。
此外,如果您处理预期为 html 标记的输入,则会遇到其他复杂情况。AntiSAMY 是一个不错的选择。
本文是一个很好的起点: https ://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
归档时间: |
|
查看次数: |
8979 次 |
最近记录: |