php - 如何防止在以 .php 结尾的 URL 后添加其他字符串?

标签 php url

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

相关文章:

php - 将数据发送到数据库并通过 AJAX 返回

PHP empty() 奇怪的行为

iphone - 使用推特 ://tweetie://custom scheme on iPhone to open twitter application to a specific user profile

java - 将 URL 中的值获取到 JSP 中

php - 允许用户创建一个新表,但每个主题只能创建一个表

php - Yii 中的数据库迁移

php - 用 PHP 构建的多语言(多语言)网站的自定义 404 页面

JavaScript - 如何检查具有特定域名的 URL?

string - 在 Laravel 4 中生成查询字符串

c - 需要检查查询字符串之前是否存在任何扩展名