【问题标题】:.htaccess php_flag engine off does not work. Or i do not understand how it works.htaccess php_flag 引擎关闭不起作用。或者我不明白它是如何工作的
【发布时间】:2015-02-17 06:16:48
【问题描述】:

例如名为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。同样的结果。

我预计因为test.php 中的php_flag engine off 代码不会执行。

如何防止test.php中的代码执行?

试图防止图像目录中的黑客以某种方式上传php文件,然后直接访问该文件或将该文件包含在另一个文件中。

措施:

1) 创建了多个验证来检查上传的文件是否是图像并且不包含一些 php 代码。

2) 禁用对图像目录的直接访问(在 htaccess 中)

3) 为了确保黑客不能将上传的 php 文件包含在另一个目录中的文件中,因为理解必须将所有目录设置为只读,除了 images 目录

【问题讨论】:

  • 那么main.php .htaccess 文件所在的目录之外吗?
  • 是的,在外面。需要在main.php所在的目录下添加php_flag engine off
  • 我不明白你为什么要这么做。如果没有人可以执行它,为什么还有一个 PHP 文件?
  • 上传图片的目录

标签: php .htaccess


【解决方案1】:

.htaccess 指令仅在处理请求时与 Apache 相关。它将阻止 Apache 直接执行 test.php 文件(或者更确切地说,它将阻止 PHP 在 Apache 调用它时执行任何操作)。但是,如果 Apache 在其他文件夹中执行脚本,那么您有一个正在运行的 PHP 实例。这个实例可以为所欲为。它不会解释任何进一步的 .htaccess 文件或考虑任何 php_flag 指令,因为这些指令仅适用于 PHP 启动之前。一旦运行,它就会运行。

.htaccess 文件仅由 Apache 解释如下:

  • 给定路径是/foo/bar/test.php
  • Apache 检查/.htaccess 是否存在,如果存在则应用其规则
  • Apache 检查/foo/.htaccess 是否存在,如果存在则应用其规则
  • Apache 检查/foo/bar/.htaccess 是否存在,如果存在则应用其规则

另一方面,PHP 只是直接包含foo/bar/test.php,它不查找或解释 .htaccess 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    相关资源
    最近更新 更多