【问题标题】:URL security hole fixing '../'URL 安全漏洞修复 '../'
【发布时间】:2016-08-27 02:52:20
【问题描述】:

我遇到了 PHP 中的 URL 路由问题。

在我的本地主机中,我有两个项目目录:

    1. project_one:
      • index.php
      • 其他目录
    1. 黑客脚本:
      • index.php
      • database_dump.php

当我必须访问我的 project_one 时,我会选择 localhost/project_one,这项工作是正确的。但是当我在这个localhost/project_one/../../hacking_script 中输入时,它会打开localhost/hacking_script/index.php 文件。

那么如何防止它,我不知道。我可以使用 .htaccess 来防止它吗?如果是那怎么办?

【问题讨论】:

  • 你试过我的答案了吗?
  • 是的,当我输入localhost/project_one/../../hacking_script 然后它重定向到localhost/hacking_script/ 没有进入我的project_one index.php 文件
  • 显示完整的.htaccessindex.php 或路由脚本。
  • 我只有普通的index.php,我没有在这个项目中使用.htaccess
  • 这就是 URL 的工作方式。没有什么可以阻止它。这是预期的行为。

标签: php .htaccess security url-routing


【解决方案1】:

这就是 URL 在浏览器中的工作方式。如果你有这个问题的网站:

http://stackoverflow.com/questions/36980771

如果你尝试:

http://stackoverflow.com/users/../questions/36980771

这将重定向到同一页面。这是Status By Design

【讨论】:

  • 不是通过行为,而是如果你破解了你的一些项目project_one主目录www&你创建了像hacking_script这样的目录,你把一些代码像var_dump($_SESSION)var_dump($_COOKIE)然后它也输出project_one中设置的整个会话或cookie值
  • 我完成了那件事,你是对的。!!。你的时间:)
  • 可能是 stackoverflow 设计的状态。但并非所有软件都如此。想象一下http://example.com/../php/php.ini 会以某种方式路由到require('../php/php.ini')
  • @ChristianGollhardt 视情况而定。
【解决方案2】:

如果你说的是路由,你说的是这个:

Request -> Router -> GetController -> ExecuteAction

这意味着GetController 最有可能includerequire 一些文件...有一部分,你需要确定,它只需要允许的文件。例如whitelist(这是推荐的方式)。或者确保不允许使用像 ../ 这样的特殊字符。

【讨论】:

  • 其实这是我的第一个答案。然后我详细理解了这个问题并改变了我的答案。 :)
猜你喜欢
  • 2012-06-14
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多