【发布时间】:2014-07-20 17:16:15
【问题描述】:
我们在 tomcat 下部署了一个 Servlet/Jsp Web 应用程序。引起我们注意的是,截至今天,它不支持扩展的 ASCII 字符,即支持包含“扩展 ASCII”字符的用户输入,例如 é ü ç。我们不需要支持国际化。
我的调查和原型设计表明,我们的服务器(servlet/jsp)端应该为请求和响应显式设置字符编码为“UTF-8”。然后事情就会奏效。 (这是一种简化。我知道有很多层。但在我们的例子中这是违规者。我们现有的服务器端代码忽略了字符编码)。
到目前为止一切顺利。然而,字符编码的处理对 Web 应用程序具有安全隐患。当我阅读 OWASP 时,大多数与 unicode 相关的安全问题或攻击似乎都与旧的 UTF-8 解析器有关。但这仍然是现代浏览器(https://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode)的问题吗?这是 OWASP 的摘录。
只要允许输入数据,就可以使用 Unicode 输入数据以伪装恶意代码并允许各种攻击
简而言之,如果我们想将 servlet 中的字符编码从默认(根据 servlet 规范“ISO-8859-1”)更改为“UTF-8”,我们会不会引起任何新的安全问题?或者任何关于具体攻击示例的指针,以及服务器端代码如何保护自己。
【问题讨论】:
标签: security tomcat servlets web-applications utf-8