Tomcat和Railo需要不区分大小写迁移(Tomcat and Railo need to be

2019-10-17 06:02发布

我从迁移的ColdFusion,MS SQL和IIS Railo,MySQL和Tomcat的7几家大型网站的设立是不坏,但有大量的旧代码,我将重新写入其中的情况下,并不总是考虑考虑。

虽然我不知道为什么区分大小写是这样的安全威胁(从MS世界未来它从来就不是一个问题),但我需要找到一种方法,就是让Tomcat 7和Railo找到img/employee/greg.jpg当它在在img/Employee/greg.jpg文件夹。 该E对员工造成的话费一半失败。

两个问题:
我怎样才能得到它是不区分大小写,为什么是大小写敏感的这样的安全隐患?

Answer 1:

好了,所以第二个问题,第一:

为什么是大小写敏感的这样的安全隐患?

区分大小写本身并不存在安全隐患。 按照在对方的回答的注释,这个问题似乎是它潜在地绕过其上有特定名称/情况下,具体的目录安全约束WEB-INF ,(其可能含有灵敏度代码或配置文件)。

如果您尝试访问domain.com/WEB-INF Tomcat将阻止,同时它把domain.com/Web-Inf不同,可能不会阻止(我没有实际测试,看看是否是这种情况) 。

然而,这是不是一个真正的问题,因为它Railo并不需要你有Web根目录内的WEB-INF目录-你可以配置Railo指向一个不同的位置 ,如果这是根目录之外,那么问题将被删除。

(免责声明:这是根据现有的资料,可能有比这更给它,但它是进行安全扫描/渗透测试针对任何可公开访问的网站,你的责任)


如何解决区分大小写的问题?

有许多的选择这里...

考虑另一个servlet引擎,而不是Tomcat的,如码头。

虽然同样适用于作为码头为Tomcat,Jetty的aliases选项(在{jetty}/etc/webdefault.xml )不会被弃用(如Tomcat的大小写敏感的开关),并在简短的测试中,它似乎阻止访问所有变体情况下的web-inf就好了。

有可能是其他servlet引擎具有可以接受的使用类似的选项(如树脂

你不需要使用Railo使用Tomcat时删除您的Web服务器。

虽然你可以使用Tomcat的狼的Web服务器,你是不是需要,并把(例如)的Apache httpd的,Nginx的,或IIS7在前面可以给你更多的灵活性-特别是它可以让你做静态资源不区分大小写。

我这样说是因为你给的例子是图像文件,所以它不需要去servlet引擎或Railo - 如果它仅是问题(完全有可能的,如果所有的请求都通过index.cfm)的静态文件,然后简单地配置的web服务器是不区分大小写的是解决这种简单的方式,而不的Tomcat / Railo在画面之中。

修复文件使用一个一致的情况下,使用URL重写重定向请求。

例如,蜘蛛您的网站,同时记录404错误 - 这会给你大小写不匹配的列表。

一旦你有了这个,创建一个简单的脚本来重命名这些文件为小写,并产生了一系列的重写规则,使请求的文件会被重定向到小写变型。

例如使用mod_rewrite语法:

# If file exists, don't rewrite it (and stop processing further rules)
RewriteCond ${REQUEST_URI}  !f
RewriteRule .* - [L]

# Requested file doesn't exist, so redirect to lowercase version
RewriteRule (?i)img/employee/greg.jpg img/employee/greg.jpg [L,R=301]
RewriteRule (?i)img/employee/bert.jpg img/employee/bert.jpg [L,R=301]
RewriteRule (?i)whatever.else whatever.else [L,R=301]

第一条规则确保存在的文件不会被不必要地检查(将L标志表示停止寻找进一步重定向),而(我)将执行不区分大小写的匹配,并做301重定向到正确的文件。

这解决了眼前的问题,而随着时间的推移,你可以逐步更新的代码使用一致的情况下,直到不再需要重定向。

与重写语法取决于你用什么web服务器不同 - 有对所有这些选项,但有些更成熟/比别人集成。



Answer 2:

在railo \等\ webdefault.xml文件更改别名是真实的。 这使你的applicate不区分大小写

<init-param>
  <param-name>aliases</param-name>
  <param-value>true</param-value>
</init-param>

至于为什么是不区分大小写的安全风险 - 我想在这方面说,它不是。 如果您已经存储的密码和他们不区分大小写,这将是一个问题(从他们一边不被散列),但我不明白为什么这会是一个安全隐患。



文章来源: Tomcat and Railo need to be case insensitive for migration