- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将几个大型站点从 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 之外,那么问题就被解决了。
(免责声明:这是基于可用信息;可能不止于此,但您有责任对任何可公开访问的网站执行安全扫描/渗透测试。)
这里有很多选项...
虽然这同样适用于 Jetty 和 Tomcat,但 Jetty 的 aliases
选项(在 {jetty}/etc/webdefault.xml
中)并未被弃用(就像 Tomcat 的区分大小写一样开关是),在简短的测试中,它似乎可以阻止对 web-inf
的所有大小写变体的访问。
很可能还有其他 servlet 引擎具有可接受的类似选项(例如 Resin
虽然您可以使用 Tomcat 的 Coyote 网络服务器,但您并不是必须这样做,并且将(例如)Apache httpd、Nginx 或 IIS7 放在前面可以为您提供更大的灵 active - 特别是它允许你让静态资源不区分大小写。
我这样说是因为你给出的例子是一个图像文件,所以它不需要转到 servlet 引擎或 Railo - 如果它只是静态文件是问题(如果所有请求都通过 index.html 是完全可能的)。 cfm) 然后简单地将 Web 服务器配置为不区分大小写是解决此问题的简单方法,无需考虑 Tomcat/Railo。
例如,在记录 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/
Railo 在哪里存储使用文件属性时创建的文件? IE。 Web 管理器中的“标签引用”没有给出指示,http://wiki.getrailo.org/wiki/3-1-Tags:CFLog 也没有
如何查找 Railo 在 Windows 2008 r2 上运行的 Windows 用户帐户? 最佳答案 我相信您可以使用System属性,与ACF中相同: prop = createObj
我有这个代码: 并输出 coldfusion 的顶级 key , java , lucee , os , separator , servlet .请注意 railo那里没有列出。 但是,如果我这样
我习惯了 Adobe ColdFusion 并且一直使用 cachedafter 缓存查询有一个“简单”的日期: SELECT icon_id, icon_name FROM REF_Icon
我在我的 Railo 服务器上注意到了一件奇怪的事情。当我 cfdump 或 cfoutput 时,我在 url 中传递的所有 + 字符都会自动转换为空格。 要更改任何服务器设置以使 + 保持 + 吗
我在我的 Railo 服务器上注意到了一件奇怪的事情。当我 cfdump 或 cfoutput 时,我在 url 中传递的所有 + 字符都会自动转换为空格。 要更改任何服务器设置以使 + 保持 + 吗
如何在 railo 服务器中查看未送达的邮件?服务器管理员中是否有任何未送达的邮件文件夹? 正确提供了 smtp 服务器名称和密码。 而且我的网络连接也很好。 但是我在 ralio 服务器端(管理员)
我正在将jopendocument 1.2与Railo 3.3.1.000一起使用 来自http://www.jopendocument.org/start_text_2.html List> mon
我有一个外部javascript文件,该文件调用setinterval函数,该函数检查cfc以确保服务器与远程计算机之间的文件传输完成。当我使用标准错误处理程序调用此函数时,它将起作用。在我添加自定义
我对 Railo 比较陌生。尝试在“Railo”上设置应用程序时,我遇到了 PDF 生成问题。请注意,我在 Adobe CFML Server 上运行该应用程序没有任何问题。 问题:在我的应用程序
我正在运行带有 Railo 4 的 Windows 2008 R2。 我在使用 Railo 4 时遇到问题,看不到 IIS 中定义的虚拟目录。 我知道在 ColdFusion 8 中,我只需在 IIS
有没有一种方法可以在 tomcats server.xml 或其他地方添加虚拟主机条目,而无需像网络服务器等支持的重新加载信号那样重新启动 tomcat 服务器 我正在为 railo appserve
自从通过 A 级 DNS 条目(即:awesome.site.com,而不是 www.site.com/awesome)访问我的网站后,我的 Railo 页面现在失败并出现类似于 railo path
我正在将几个大型站点从 ColdFusion、MS SQL 和 IIS 迁移到 Railo、MySQL 和 Tomcat 7。设置还不错,但有很多旧代码,我将在不区分大小写的情况下重写始终考虑在内。
我正在尝试获取一个程序来将标签打印到连接到服务器的打印机 (USB) 上。我已经能够从批处理文件打印到它,但由于某种原因,打印命令在 coldfusion 执行命令中失败。我目前的解决方案是通过 Ja
在我的 UDF 和组件中,我一直在使用函数 local范围而不是 var关键字。我将本地范围模式设置为“始终”服务器范围内,所以我没有明确使用 local 关键字(除非我在 cfquery 循环中,字
我正在尝试使映射工作 ... this.mappings = { "/toolbox" = ExpandPath(".") & "toolbox", "/models" =
我的理解是 nulls last 对于 QoQ 是不可能的。无论我是对行进行升序还是降序排序,我如何欺骗 coldfusion 最后对空值进行排序? 我试过在查询的 SELECT 和 ORDER 部分
我正在运行以下两个语句: 首先是 A) 它做它需要做的事情并工作: SELECT itemColumn ,valueColumn ,label FROM rstCombinedChartD
我以前没有使用过 cfthread,但我使用以下代码,但它不起作用。
我是一名优秀的程序员,十分优秀!