5

我们网站的团队刚刚发现,任何用户都可以在以 .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 错误。

任何帮助是极大的赞赏。谢谢!

编辑:

我想我已经修好了。对于第一个问题,我AcceptPathInfo Off在我的 .htaccess 中添加了。对于第二个问题,我刚刚^在我的动态 URL 的 RewriteRule 之前添加,例如RewriteRule ^product/(.*)$,这样没有人可以在域名和第一个参数之间添加额外的字符串。感谢所有的帮助!

4

2 回答 2

1

我怎样才能防止这种情况发生,我该如何处理?

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

就 SEO 或安全性而言,这是一个严重的问题吗?

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

于 2012-11-23T09:09:47.720 回答
0
RewriteEngine On

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

RewriteRule ^(.*)$ index.php?url=$1 [PT,L] 
于 2012-11-23T09:13:47.197 回答