gpt4 book ai didi

Tomcat 和 Railo 迁移需要不区分大小写

转载 作者:行者123 更新时间:2023-11-28 22:09:16 24 4
gpt4 key购买 nike

我正在将几个大型站点从 ColdFusion、MS SQL 和 IIS 迁移到 Railo、MySQL 和 Tomcat 7。设置还不错,但有很多旧代码,我将在不区分大小写的情况下重写始终考虑在内。

虽然我不确定为什么区分大小写是一种安全威胁(来自 MS 世界,这从来都不是问题)但我需要找到一种方法让 Tomcat 7 和 Railo 找到 img/employee/greg .jpg 当它位于 img/Employee/greg.jpg 文件夹中时。 employee 中的 E 导致一半的调用失败。

两个问题:
我怎样才能让它不区分大小写,为什么区分大小写会带来安全风险?

最佳答案

好的,那么第二个问题:

为什么区分大小写会带来安全风险?

区分大小写本身并不是安全风险。根据其他答案中的评论,问题似乎是它可能绕过具有特定名称/大小写的目录的安全约束,特别是 WEB-INF,(可能包含敏感代码或配置文件)。

如果您尝试访问 domain.com/WEB-INF Tomcat 将阻止它,同时它会将 domain.com/Web-Inf 视为不同的,并且可能不会阻止它(我还没有真正测试过这是否是案)。

然而,这并不是真正的问题,因为 Railo 不要求您在 webroot 中拥有 WEB-INF 目录 - 您可以 configure Railo to point to a different location如果它在 webroot 之外,那么问题就被解决了。

(免责声明:这是基于可用信息;可能不止于此,但您有责任对任何可公开访问的网站执行安全扫描/渗透测试。)


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

这里有很多选项...

考虑使用另一个 servlet 引擎代替 Tomcat,例如 Jetty。

虽然这同样适用于 Jetty 和 Tomcat,但 Jetty 的 aliases 选项(在 {jetty}/etc/webdefault.xml 中)并未被弃用(就像 Tomcat 的区分大小写一样开关是),在简短的测试中,它似乎可以阻止对 web-inf 的所有大小写变体的访问。

很可能还有其他 servlet 引擎具有可接受的类似选项(例如 Resin

将 Railo 与 Tomcat 结合使用时,您无需删除 Web 服务器。

虽然您可以使用 Tomcat 的 Coyote 网络服务器,但您并不是必须这样做,并且将(例如)Apache httpd、Nginx 或 IIS7 放在前面可以为您提供更大的灵 active - 特别是它允许你让静态资源不区分大小写。

我这样说是因为你给出的例子是一个图像文件,所以它不需要转到 servlet 引擎或 Railo - 如果它只是静态文件是问题(如果所有请求都通过 index.html 是完全可能的)。 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 标志表示停止寻找进一步的重定向),而 (?i) 将执行不区分大小写的匹配并执行 301 重定向到正确的文件.

这解决了眼前的问题,随着时间的推移,您可以逐渐更新代码以使用一致的大小写,直到不再需要重定向为止。

重写语法根据您用于 Web 服务器的内容而有所不同 - 所有这些都有选项,但有些比其他的更成熟/集成。

关于Tomcat 和 Railo 迁移需要不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com