我们网站的团队刚刚发现,任何用户都可以在以 .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/(.*)$
以便没有人可以在域名和第一个参数之间添加额外的字符串。感谢所有的帮助!
最佳答案
How can I prevent this from happening and how do I deal with it?
这是由于 Apache 的 AcceptPathInfo
指示。您可以将其关闭 - 如果相应地配置了服务器,您只需要一个 .htaccess 文件即可。
Is this a serious problem in terms of SEO or security?
我想不出它会成为一个严重问题的方式。它通常在大多数处理程序中默认启用,并且通常用作“穷人的 mod_rewrite
”(一种提供外观精美的 URL 的方法)。
关于php - 如何防止在以 .php 结尾的 URL 后添加其他字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525812/