防止Spring MVC中的XSS攻击

时间:2017-10-27 09:11:17

标签: javascript java spring security

我正在开发一个目前容易遭受XSS攻击的网站。当我读到它时,防止它的最好方法是:

  1. 验证任何用户输入。
  2. 清理并转义要在网页上显示的任何字符串。
  3. 对于第1点,我在客户端(JS)和数据持久存储到数据库之前验证用户输入。

    对于第2点,我不太确定。我应该在将字符串发送到JSP之前将它们添加到MVC对象中来清理和转义字符串吗?我用这种方法看到的问题是,有太多的对象带有字符串参数,并且清理它们中的每一个都会很痛苦。

    SO建议的最佳方法是什么?

    谢谢!

1 个答案:

答案 0 :(得分:0)

对于第1点:

  • 客户端验证并不能确保免受XSS的攻击,因为攻击者可以跳过它。客户端验证的目的是引导合法用户提供所需的输入,而不是防止攻击者进行攻击。
  • 仅在保存到数据库时验证是不够的。用户输入必须在收到后立即在服务器端进行验证。根据应用程序,用户输入可能会在响应中流回用户,或者也可能通过应用程序范围的变量流向其他用户,而无需从数据库中读取(您的验证值)。

对于第2点:

  • 清理并编码那些用户输入的输出字符串(以任何形式:请求参数,请求标题,请求正文,保存在数据库中的用户输入)。
  • 输出字段可以使用可用的编码库(如OWASP Java Encoder
  • )在jsp页面中进行编码
  • 如果您可以切换到JSF,它内置了XSS保护。 Refer for details

请参阅OWASP XSS prevention cheat sheet