【发布时间】:2012-11-23 09:05:43
【问题描述】:
我们网站的团队刚刚发现,任何用户都可以在以 .php 扩展名结尾的 URL 后添加斜杠“/”,然后添加任何字符串,并且仍然可以访问相同的原始页面。
例如: 我可以通过以下方式访问 www.mydomain.com/index.php:
- www.mydomain.com/index.php/test
- www.mydomain.com/index.php/test/123
- www.mydomain.com/index.php/wqeqwew/2234dwd
(注意:index.php/ 之后的附加字符串在服务器中不存在,它们只是一些垃圾)
另一个问题是,使用我的动态 URL,我总是可以在我的域名和第一个参数之间添加一个不存在的 php 文件。
例如: 我可以通过以下方式访问 www.mydomain.com/product/one:
- www.mydomain.com/test.php/product/one
- www.mydomain.com/imnothere.php/product/one
如何防止这种情况发生以及如何处理?就 SEO 或安全性而言,这是一个严重的问题吗?我希望网站在浏览器中输入或单击此类 URL 时返回 404 错误。
非常感谢任何帮助。谢谢!
编辑:
我想我已经修好了。对于第一个问题,我在.htaccess 中添加了AcceptPathInfo Off。对于第二个问题,我刚刚在我的动态 URL 的 RewriteRule 之前添加了^,例如RewriteRule ^product/(.*)$ 这样没有人可以在域名和第一个参数之间添加额外的字符串。感谢大家的帮助!
【问题讨论】:
-
向我们展示您的
mod_rewrite规则(.htaccess 文件)。 -
我知道你为什么会担心。但这绝对不是安全问题,对您的 SEO 也没有任何影响。它可能为您的 SEO 做点什么的唯一方法是,如果有人在某个地方发布了一个链接,该链接在 url 中有一些任意关键字,但这无论如何都是您无法控制的。至于安全性,除非您的脚本期望它们是参数,否则它们几乎无能为力:)
-
当这可能被滥用时,我可以想到一个漏洞利用。让我们假设您的某些脚本解析了 URL 并对其部分进行了处理。那么至少有XSS攻击的可能……