Tomcat 8.5:允许BackSlash

时间:2018-04-30 06:59:20

标签: tomcat tomcat8

正致力于配置NetIQ IDAM,NetIQ IDAM的一个组件即User Application在预配置的Tomcat 8.5.x上运行。 User Application具有一些预定义的功能,可以在URL中强制使用反斜杠,但tomcat会阻止URL中的BlackSlashes作为安全措施。

我尝试使用这些选项:

-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
-Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true

但没有用。

并且因为部分组件不可自定义,除了以某种方式配置tomcat以允许URL中的反斜杠之外,我没有任何其他选项。

任何建议我如何实现这一目标。

HTTP请求示例:?targetName = abc @ xyz \ .com

1 个答案:

答案 0 :(得分:2)

客户端坏了。 RFC 7230和RFC 3986要求在查询字符串中使用时\字符为%nn编码。

通常,Tomcat社区实现规范并将任何非规范合规性视为错误。 Tomcat社区期望其他开发人员社区也这样做。

不幸的是,浏览器供应商选择忽略RFC 7230和RFC 3986的%nn编码要求,尽管声称要按照自己的规范工作,但最终结果是每个主要浏览器%nn编码不同需要编码的字符的子集。

对你而言,好消息是,由于这个混乱,Tomcat 9.0.8,8.5.21,8.0.52和7.0.87将会引入(这些版本仍然在我输入时投票)选项允许直接在URI路径和/或查询字符串中使用字符而不使用%nn编码。

一旦这些版本可用,您就可以将Tomcat配置为接受查询字符串中的\。与此同时,无论如何,我建议针对规范违规向客户提出错误。最好有一个正常工作的客户端,这样你就可以在Tomcat中解决问题。

相关问题