URL安全漏洞修复'../'

3
我在PHP中遇到了URL路由问题。
在我的本地主机上,我有两个项目目录:
1. project_one: - index.php - 其他目录
2. hacking_script: - index.php - database_dump.php 当我想要访问project_one时,我会使用'localhost/project_one',这样是正确的。但是,当我输入'localhost/project_one/../../hacking_script'时,它会打开'localhost/hacking_script/index.php'文件。
我不知道该如何防止这种情况发生。我能否使用.htaccess来防止?如果可以,那怎么做?

你试过我的答案了吗? - Praveen Kumar Purushothaman
是的,当我输入 localhost/project_one/../../hacking_script 时,它会重定向到 localhost/hacking_script/ 而不是进入我的 project_one 的 index.php 文件。 - Himanshu
иҜ·еұ•зӨәе®Ңж•ҙзҡ„.htaccessе’Ңindex.phpжҲ–и·Ҝз”ұи„ҡжң¬гҖӮ - Praveen Kumar Purushothaman
我只有一个简单的 index.php 文件,并且在这个项目中我没有使用 .htaccess - Himanshu
这就是URL的工作方式,没有任何阻止它的东西。这是预期的行为。 - Praveen Kumar Purushothaman
试试这个:http://stackoverflow.com/users/../questions/36980771/url-security-hole-fixing - Praveen Kumar Purushothaman
2个回答

2

如果您在谈论路由,那么您正在谈论这个:

Request -> Router -> GetController -> ExecuteAction

这意味着GetController很可能会includerequire一些文件...这是您需要确保的部分,它只需要引用允许的文件。例如,使用白名单(推荐方式)。或者确保不允许任何特殊字符,如../

其实这是我的第一个答案。然后我详细理解了问题并改变了我的答案。 :) - Praveen Kumar Purushothaman

1
这是浏览器中URL的工作方式。如果您有此问题的网站:
https://dev59.com/cpbfa4cB1Zd3GeqPwqen

如果您尝试:

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

这将重定向到同一页。这是按设计状态

不是通过行为,而是如果您黑掉了项目“project_one”主目录“www”,并创建了一个名为“hacking_script”的目录,并放置了一些代码,例如var_dump($_SESSION)var_dump($_COOKIE),那么它也会输出在“project_one”中设置的整个会话或cookie值。 - Himanshu
我完成那件事了,你是对的。感谢你的时间 :) - Himanshu
也许状态是stackoverflow的设计。但对于每个软件来说都不是这样。想象一下,http://example.com/../php/php.ini 会被路由到 require('../php/php.ini') - Christian Gollhardt
@ChristianGollhardt 取决于情况。 - Praveen Kumar Purushothaman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接