問題描述

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