【问题标题】:my root php directly accessible, i've tried to block it but unsuccessful我的根 php 可直接访问,我试图阻止它但不成功
【发布时间】:2015-11-12 07:03:36
【问题描述】:

在我的网站 (WP) 上,一些 php 可以直接访问,这是其中之一 example/wp-settings.php

结果:

警告:需要(ABSPATHwp-includes/load.php):无法打开流:第 21 行的 /home1/hidden/public_html/wp-settings.php 中没有这样的文件或目录

警告:需要(ABSPATHwp-includes/load.php):无法打开流:第 21 行的 /home1/hidden/public_html/wp-settings.php 中没有这样的文件或目录

致命错误:require():在 /home1/hidden/public_html/wp-settings 中打开所需的 'ABSPATHwp-includes/load.php' (include_path='.:/opt/php54/lib/php') 失败。第21行的php

我在.htaccess上试过这个

<Files *.php>
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Files>

<Files index.php>
    Order Allow,Deny
    Allow from all
</Files>

阻止直接访问但允许从服务器访问,但是这导致我的仪表板上出现错误,许多控件无法访问。

我也已经尝试过其他类似的方法,但都没有成功

我不会专门阻止直接访问 wp-settings.php,因为我确定还有其他 php 文件需要阻止直接访问。

我的问题,如何阻止对 php 的直接访问,我的服务器能够访问 php 以及所有 WP 仪表板控件正常运行

谢谢

【问题讨论】:

    标签: php wordpress .htaccess


    【解决方案1】:

    在文件wp-settings.php顶部添加以下行

    <?php if ( ! defined('ABSPATH')) exit('No direct script access allowed');
    

    限制对wp-includes的所有访问

    # Block wp-includes folder and files
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-admin/includes/ - [F,L]
    RewriteRule !^wp-includes/ - [S=3]
    RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
    RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
    RewriteRule ^wp-includes/theme-compat/ - [F,L]
    </IfModule>
    

    【讨论】:

    • 根文件夹中的其他 php 文件呢?我也应该添加这一行吗?在htaccess上是否有任何解决方案,因为有很多php文件
    • 是的,我也使用该代码来限制 wp-include,它位于 codex.wordpress 上:D wp-content 上的 php 怎么样?到目前为止,我找不到好的代码,我的 wp-content php 可以直接访问,plugin/theme php。谢谢
    【解决方案2】:

    我将此添加到我的 .htaccess 中:

    <Files error_log>
        Deny from all
    </Files>
    <Files wp-settings.php>
        Deny from all
    </Files>
    <Files wp-config.php>
        Deny from all
    </Files>
    <Files wp-config-sample.php>
        Deny from all
    </Files>
    <Files wp-load.php>
        Deny from all
    </Files>
    <Files wp-blog-header.php>
        Deny from all
    </Files>
    

    似乎回答这个问题的唯一方法是简单地枚举根目录中所有包含文件的文件(当然应该在 wp-includes 中!)。

    然后是在 wp-includes/.htaccess 文件中放入什么的问题。我仍在努力。这应该只是拒绝访问所有内容的情况,但我怀疑它没有那么简单 - 如果我没记错的话,这样做会杀死编辑器。

    【讨论】:

    猜你喜欢
    • 2011-05-11
    • 2018-08-31
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多