问题描述

只是一个快速的问题,可能有助于安全。我注意到 readme.html 文件中列出了版本号。每次升级后都会重新出现,所以执行 licence.txt 和 wp-config-sample.php 。

有没有一个简单的方法让 WordPress 在升级后自动删除这些文件?

我已经阻止版本号显示在元标记,rss feed,atom 等。

我知道这种安全性不是那么有用,但只是认为这可能是一个微小的开始。我听说人们可以简单地检查 WP-includes 中包含的 jQuery 的版本,并交叉参考哪个版本的 WP 发布它。

最佳解决方案

你真的不需要删除这些文件。只需阻止对它们的访问就会更容易。如果你使用漂亮的 URL,你已经有了一个.htaccess 文件。使用.htaccess 阻止文件是安全的,您只需要添加一个指令一次。

通过向.htaccess 添加一个指令来阻止文件,如下所示:

    <files filename.file-extension>
         order allow,deny
         deny from all
    </files>

所以,要阻止 readme.html 你这样做:

    <files readme.html>
         order allow,deny
         deny from all
    </files>

对许可证文件或您想要阻止任何人访问的任何其他文件执行相同操作。只需在记事本或任何其他基本文本编辑器中打开.htaccess,添加指令并保存,确保文本编辑器保持文件名完全不含任何.txt 文件。

次佳解决方案

这是我的采取

RewriteRule (?:readme|license|changelog|-config|-sample).(?:php|md|txt|html?) - [R=404,NC,L]
  • 404(不存在) 而不是 403(禁止),以避免任何线索关于存在。

  • 也可能在子文件夹 (即主题和插件,可能提供攻击机会)

  • 大小写敏感,extension-flexible 也捕获 README.html 或 license.html(随时添加一些典型的嫌疑人,如 changelogs | faq |贡献)

就我个人而言,我也会阻止:

RewriteRule .(?:psd|log|cmd|exe|bat|c?sh)$ - [NC,F]

注意:

  • ‘?:’ 只是声明括号为 non-matching(不重要) 。

  • 要求 RewriteEngine 是 on(很可能是,这将是罕见的,使用 wordpress 没有…(丑陋的永久链接等)) 。

  • 插入到.htaccess 中的 # BEGIN WordPress 部分之前

第三种解决方案

add_action('core_upgrade_preamble','my_function_to_delete_files');

编辑:你也可以尝试这些

add_action('upgrader_pre_install','my_function_to_delete_files');
add_action('upgrader_post_install','my_function_to_delete_files');

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。