例如,名为test
的目录放置.htacess,第一行php_flag engine off
中只有代码
在目录test
中放置文件test.php
,其代码为echo 1+3;
另一个文件(main.php
)放置include("test.php");
打开main.php
并查看4
(1 + 3的结果)。
添加了AddType text/plain .php .phtml .php3
。同样的结果。
我预计,因为php_flag engine off
中的test.php
代码无法执行。
要防止在test.php
中执行代码需要做什么?
当图像目录中的黑客以某种方式上传php文件时,试图阻止这种情况,然后直接访问该文件或将该文件包含在另一个文件中。
措施:
1)创建了多个验证来检查上传的文件是否是图像,并且不包含某些PHP代码。
2)禁用直接访问图像目录(在htaccess中)
3)要确定黑客不能将上传的php文件包含在另一个目录中的文件中,因为必须将read只设置为所有目录,但images目录除外
答案 0 :(得分:4)
.htaccess指令仅在处理请求时与Apache相关。它将阻止Apache直接执行test.php
文件(或者更确切地说,它会阻止PHP在Apache调用时执行任何操作)。但是,如果Apache正在某个其他文件夹中执行脚本,那么您将拥有一个正在运行的PHP实例。这个实例可以做任何想做的事情。它不会解释任何进一步的.htaccess文件或考虑任何php_flag
指令,因为那些只在 PHP启动之前应用。一旦它正在运行它。
.htaccess文件仅由Apache解释如下:
/foo/bar/test.php
/.htaccess
是否存在,如果是,则应用其规则/foo/.htaccess
是否存在,如果是,则应用其规则/foo/bar/.htaccess
是否存在,如果是,则应用其规则另一方面,PHP直接包含foo/bar/test.php
,它不会查找或解释.htaccess文件。