我的根 php 可直接访问,我试图阻止它但不成功

Posted

技术标签:

【中文标题】我的根 php 可直接访问,我试图阻止它但不成功【英文标题】:my root php directly accessible, i've tried to block it but unsuccessful 【发布时间】: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 仪表板控件正常运行

谢谢

【问题讨论】:

【参考方案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 文件中放入什么的问题。我仍在努力。这应该只是拒绝访问所有内容的情况,但我怀疑它没有那么简单 - 如果我没记错的话,这样做会杀死编辑器。

【讨论】:

建议禁用 wp 编辑器以提高站点安全性。您可以改为从 FTP 编辑文件。 codex.wordpress.org/Hardening_WordPress

以上是关于我的根 php 可直接访问,我试图阻止它但不成功的主要内容,如果未能解决你的问题,请参考以下文章

是否可以阻止使用 Javascript 或 PHP 设置 cookie?

阻止直接访问文件,但允许通过 jquery 加载函数访问

如何阻止 ExpandableListView 窃取子触摸事件?

PHP-阻止直接访问PHP文件

防止直接 url 访问 php 文件

如何打开放置在iframe html中直接访问阻止目录中的pdf文件