問題描述

只是一個快速的問題,可能有助於安全。我注意到 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。