【问题标题】:How can I prevent additional strings from being added after URLs that end with .php?如何防止在以 .php 结尾的 URL 之后添加其他字符串?
【发布时间】: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攻击的可能……

标签: php url


【解决方案1】:

如何防止这种情况发生以及如何处理?

这是由于 Apache 的 AcceptPathInfo 指令。您可以将其关闭 - 如果相应地配置了服务器,您只需要一个 .htaccess 文件即可。

在 SEO 或安全性方面,这是一个严重的问题吗?

我想不出有什么方法会造成严重的问题。它通常在大多数处理程序中默认启用,并且经常被用作“穷人的mod_rewrite”(一种提供精美 URL 的方式)。

【讨论】:

  • SEO - 那么duplicit(多重)内容呢?尽管这些不存在的 URL 可能不会在内容中找到,但在创建内容时仍然可能会出错,而错误(但错误地工作)的链接被编入索引...
  • @shadyyx 这可能是个问题,但我怀疑谷歌是否没有意识到这个功能,并且如果内容重复是由外部链接引起的,我不会惩罚它。
  • 感谢@Pekka 的回复。我只是在我的 .htaccess 文件中的某处添加AcceptPathInfo Off 吗?我试着这样做,但什么也没发生。再次感谢!
  • @jcap 是的,这就是想法......如果它不起作用,则可能在服务器配置中禁用更改 .htaccess 中的这些选项的可能性。在这种情况下,您必须与服务器管理员交谈。如果设置了$_SERVER["PATH_INFO"],另一种选择是退出脚本并发送404 标头-但您必须分别为每个PHP 文件执行此操作
  • @Pekka,我现在明白了。它不起作用,因为我添加了 RewriteRule 以允许从我的 URL 中删除 .php 扩展名。我删除了它,AcceptPathInfo Off 工作了。感谢您的帮助!
【解决方案2】:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多