普拉尚潘迪
我正在开发一个当前易受 XSS 攻击的网站。当我读到它时,防止它的最好方法是:
- 验证任何用户输入。
- 清理和转义要在网页上显示的任何字符串。
对于第 1 点,我在客户端 (JS) 和数据持久保存到数据库之前验证用户输入。
对于第 2 点,我不太确定。在将字符串发送到 JSP 之前,我应该在将它们添加到 MVC 对象时清理和转义字符串吗?我发现这种方法的问题在于,带有字符串参数的对象实在是太多了,对它们中的每一个进行清理都会很痛苦。
SO 建议的最佳方法是什么?
谢谢!
米塔尔
对于第 1 点:
- 客户端验证并不能确保防止 XSS,因为它可以被攻击者跳过。客户端验证的目的是指导合法用户提供所需的输入,而不是防止攻击者进行攻击。
- 仅在保存到数据库不够时才进行验证。一旦收到用户输入,就必须在服务器端对其进行验证。根据应用程序,用户输入可能会在响应中流回用户,或者也可能通过应用程序范围的变量流向其他用户,而不会从数据库中读取(您的验证值)。
对于第 2 点:
- 仅对那些作为用户输入的输出字符串进行清理和编码(以任何形式:请求参数、请求标头、请求正文、保存在数据库中的用户输入)。
- 可以使用可用的编码库(如OWASP Java Encoder)在 jsp 页面中对输出字段进行编码
- 如果您可以切换到 JSF,则它内置了 XSS 保护。详情请参阅。
请参考OWASP XSS 预防备忘单
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句