我们知道在 URL 中传递 lang 参数会改变 grails 应用程序的语言环境
/url?lang=de
在代码中,我可以通过 RequestContextUtils.getLocale(request) 获取语言环境,它使用 lang 参数返回在 ParamsAwareLocaleChangeInterceptor(grails 源的一部分)中设置的语言环境。
如果将脚本或损坏的字符串作为值传递给 lang 参数,则会将相同的废话设置为语言环境。
/url?lang=>"'><script>alert(167) </script>&=>"'><script>alert(167)</script>
通过此请求,http 标头中的 Content-language 设置为 script= lang 参数的值。在这个 RCU.getLocale() 返回这个恶意脚本之后,它会弄乱我网站的内容,因为很多内容是根据语言环境决定的。是解决这个问题的一种方法(在设置语言环境之前清理语言)还是这是一个 grails 错误?
另外,我可以限制在 lang 中传递的内容吗?例如:如果站点仅支持“en”和“de”,则传递的 /url?lang=es 会混淆内容。在 grails 拦截器中更改语言环境之前,有没有办法可以将 lang 参数的值限制为仅“en”和“de”,可能在过滤器或其他东西中?