Spring security spring安全本机xss筛选器

Spring security spring安全本机xss筛选器,spring-security,xss,Spring Security,Xss,为什么Spring Security不提供任何XSS过滤器来清理表单输入值 根据该票据,此类XSS过滤器的优先级较低: (虽然票证仅说明URL查询字符串。还需要清理POST参数) 在我看来,spring提供这样一个过滤器而不是构建自己的过滤器是非常有用的。这是一个反复出现的问题。XSS最好在输出阶段通过使用编码来处理。也就是说,按原样存储数据库中的所有内容,是的,存储是可以的,但是一旦输出,就要根据输出的上下文正确编码。对于HTML,这将是script,但是如果输出上下文是纯文本,则只需按原样

为什么Spring Security不提供任何XSS过滤器来清理表单输入值

根据该票据,此类XSS过滤器的优先级较低:

(虽然票证仅说明URL查询字符串。还需要清理POST参数)


在我看来,spring提供这样一个过滤器而不是构建自己的过滤器是非常有用的。这是一个反复出现的问题。

XSS最好在输出阶段通过使用编码来处理。也就是说,按原样存储数据库中的所有内容,是的,存储
是可以的,但是一旦输出,就要根据输出的上下文正确编码。对于HTML,这将是
script
,但是如果输出上下文是纯文本,则只需按原样输出
(假设使用相同的字符集编码)。旁注:使用参数化查询或等效查询存储在数据库中,以避免SQL注入,但存储的文本应与输入的内容完全匹配

Microsoft试图通过ASP.NET中的请求验证功能阻止看起来像XSS的输入。然而,这并不是很有效,而且经常会发生。来自其他框架的类似方法注定要失败

这样做更好的原因是它使事情变得简单得多。想象一下,如果StackOverflow不允许HTML或脚本标记,那么该站点将无法作为人们发布代码片段的场所

您可以使用输入验证作为第二道防线。例如,如果您要求用户输入他们的汽车登记,您只希望允许输入字母数字和空格。然而,对于更复杂的字段,通常很难将输入限制为安全集,因为在此阶段输出上下文未知

说出你的语言过滤的
字符。但是,您正在将用户输入输出到以下上下文中

<img src="foo.jpg" alt="USER-INPUT" />

如果输出到JavaScript服务器端,也会出现类似的问题。这就是为什么在使用用户控制的值时,应由开发人员选择正确的编码类型。

如果在HTML页面中插入任何用户输入的数据而没有正确转义,则会出现安全问题,并且像“C&a”这样的无辜文本将无法工作。如果您正确地转义它,您就不需要XSS过滤器,但是这是spring可以处理的,这样程序员就不必关心转义了。好处:1)您不必重构遗留应用程序2)您不必关心转义3)您可能更喜欢清理而不是转义我同意有些情况下html编辑器或事件处理程序(如您放置的事件处理程序)需要特别注意,但总的来说,本机输入过滤器我仍然认为它会很有用。我还喜欢你关于字段限制的评论,这使我认为使用注释验证字段可以是过滤xssA的另一种方式。本机输入过滤器也不能防止来自其他源的输出,例如,通过另一个应用程序填充的数据库。我认为本机过滤器倾向于向开发人员隐藏问题,并导致其他有效输入出现问题(例如.NET过滤器有时会阻止

<img src="foo.jpg" alt="" onmouseover="alert('xss')" />