[英]Prevent direct URL Access of PHP files in the Web Application
应用程序中的所有php文件都可以通过URL直接访问。 在我的php文件的开头添加此代码适用于使用POST方法请求的少数代码:
if ( $_SERVER['REQUEST_METHOD']=='GET' && realpath(__FILE__) == realpath( $_SERVER['SCRIPT_FILENAME'] ) ) {
die(header( 'location:/webapp/postings' ));
}
但是,我确实有一些通过GET方法请求的php文件,上面的代码对它们不起作用,因为我带有以下代码:
if(!isset($_SERVER['HTTP_REFERER'])){
die(header('location:/webapp/postings'));
}
我知道HTTP_REFERER不值得信任。 还有其他选择吗?
有人可以告诉我一种防止直接URL访问的通用方法,而不会改变所有php文件中的代码。
注意:我的应用程序正在IIS 7.5 Web服务器上运行。
不要这样做:
public_html/
includes/
dont_access_me_bro.php
...
index.php
...
改为:
includes/
dont_access_me_bro.php
...
public_html/
index.php
...
将源文件保留在文档根目录之外可以保证用户无法通过更改HTTP请求中的URI来直接访问它们。 这不会防止LFI攻击。
要找出文档根目录的位置,这个方便的PHP脚本可以帮助:
var_dump($_SERVER['DOCUMENT_ROOT']);
如果打印出string (25) "C:\\htdocs\\www\\example.com"
,则不希望将文件存储在C:\\htdocs\\www\\example.com
或C:\\htdocs\\www\\example.com
任何子目录中C:\\htdocs\\www\\example.com
。
如果您将用户提供的文件放在文档根目录中,则会产生直接从浏览器访问它们的风险,以及Apache / nginx /等。 搞砸了,他们上传的文件可以作为代码执行。
所以你不希望你的文件在C:\\htdocs\\www\\example.com\\uploaded
,你会想要像C:\\uploads\\example.com\\
。
本文将详细介绍PHP中的安全文件上载 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.