Dot-Htaccess

如何通過 htaccess 隱藏我的 Wordpress 安裝?

  • January 26, 2021

(我知道不建議通過默默無聞的安全性)。

我試圖隱藏我正在使用 Wordpress 的事實。這篇文章很有幫助,但它只涉及內容(有點)。我有興趣發生以下情況:

  1. 使用者嘗試wp*通過瀏覽器訪問任何帶有子字元串的 url。

***結果:***重定向到 404 頁面。 2. 部落格使用者/管理員知道為了登錄他們應該去http://example.com/blogin/.

結果: apache 將它們重定向到http://example.com/wp-admin/. 3. 如果使用者嘗試直接wp-admin從他們的瀏覽器訪問,他們會被發送到#1。

***結果:***重定向到 404 頁面。

到目前為止我所做的事情

  1. 我注意到對於 WordPress 的預設安裝,我可以訪問wp*WP 安裝的(相對)根目錄中的任何文件。具體來說wp-settings.php是有問題的,因為它洩露了有關我的設置的資訊。如果使用者訪問它,它會噴出一些 PHP 錯誤並顯示部分目錄結構。我編輯了我的 php.ini 文件以display_errors關閉。現在訪問http://example.com/wp-settngs.php會彈出一個空白頁面。
  2. 這本身並不理想,因為它揭示了wp-settings.php存在。事實上,訪問所有不同的wp*文件是可能的(結果不同)。然後我將以下內容放入我的 htaccess 文件中:
     RewriteEngine On
     RewriteBase /
     RewriteCond %{PATH_INFO} wp* [NC]
     RewriteRule .* - [F]

這很好用!任何帶有 a 的內容wp*都被路由到我的自定義 404 頁面。但現在我無法訪問我的管理頁面。 3. 我試圖將這一行插入到上面的程式碼中:RewriteRule ^blogin wp-admin [NC,R,L]. 它應該是正確的,RewriteBase但這沒有用。 4. 我試圖做一個:

<Directory /home/example/wp*> 
Order Allow, Deny 
Allow from example.com 
Deny from all 
</Directory> 

希望我網站的推薦人(通過重寫規則)能夠訪問 wp-admin,但不能訪問外部人員。這也不起作用。apache 抱怨你不能從 htaccess 中使用這個指令。

我已經閱讀了 apache 文件;從理論上講,我理解這些概念,但我需要一些實際幫助。

編輯:我正在尋找使用 .htaccess 而不是 httpd.conf 的解決方案,因為我的特定設置使使用 httpd.conf 不一致。

TLDR;僅在 .htaccess 文件中使用指令是不可能掩蓋 WordPress 的。

現在來了一個悲慘和恐怖的故事。我們的朋友 fbh 關於隱藏 WordPress 的困難是正確的,它不適合黃腹懦夫。啊!這是這個(錯誤)冒險的細節。請注意!

動機

我是那些喜歡完美事物的人之一。我將浪費時間過度設計某些東西以成為“正確的方式”。我不喜歡預設 WordPress 設置的一件事是使用者可以輸入http://ex.com/wp-settings.php,然後所有這些 php 行話都會到處亂竄。我最終能夠通過 PHP 關閉錯誤,但這導致了一個更大的願望,即只擁有來自伺服器的可定位資源……並且其他所有內容都將 404/3’ified 到我們的自定義搜尋頁面。在那之後,我有了這個想法,我想完全隱藏底層框架(即 WP)……無論如何……如果你想隱藏 WP,它是可能的。但這真的很難。

走向你的厄運的步驟

  1. **適當地修改您的 PHP ini 設置。*(即關閉顯示錯誤)***您可能認為這是不必要的,因為如果我們使用 .htaccess 來重新路由,人們將不會看到錯誤,因為他們無法訪問導致錯誤的資源(我在看著你wp-settings.php)。但是顯示的頁面中可能會出現錯誤,因此您絕對希望它們關閉。僅僅因為WP_*設置了指令並不一定意味著事情會按照您認為的方式進行。我發現在我的伺服器上,我必須首先將 display_errors 設置為 false,因為 WP_DISPLAY_ERRORS 假定預設設置為 false。

控制 PHP ini 設置可能就像在 .htaccess 文件中放入指令一樣簡單。或者,在我的情況下,就像創建一個 CGI 處理程序然後將一個 php.ini 文件放在那裡一樣複雜。YMMV 取決於您的設置。 2. **wp-刪除對帶有前綴的文件/目錄的所有訪問。**這個想法是您的 WP 部署是關於您的內容,而不是關於 WP(除非它專門針對 WP)。人們想看看 http;//ex.com/wp-cron.php 有什麼是沒有意義的……除非他們做壞事。我通過這個實現了這一點:

# If the resource requested is a `wp-*` file or directory, poop to a 403. 
RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
RewriteCond %{REQUEST_FILENAME} -d [NC] 
RewriteRule .* - [F,L] 
  1. 了解如何通過 mordor通過刪除對您的所有訪問權限,wp-*您將無法再訪問 WP 的管理部分。這真的很糟糕。除了那個沮喪之外,你剛剛意識到你不知道什麼是RewriteCond %{ENV:REDIRECT_STATUS} ^$真正的。好吧,我試圖做的是給自己一個 WP 管理頁面的“秘密”後門。我使用了這段程式碼:
# If the resource requested is 'mordor' (with or without an ending
# slash) do a URL rewrite to `wp-login.php`. 
RewriteCond %{REQUEST_URI} mordor/?$ [NC]
RewriteRule mordor/?$ /wp-login.php [NC,L]

所以 URL:http ://ex.com/mordor應該把我們帶到登錄頁面。我們之所以REDIRECT在上面的步驟中有這行是因為這個 URL 被重寫為一個wp-*URL,我們不希望第一個重寫規則得到它。由於它是在內部重定向的,REDIRECT_STATUS因此將正確設置並且不會將我們推向 403/4 土地。 4. 刪除 wp-content Wordpress.stackexchange有一篇關於刪除 wp-content 的精彩文章。您必須重新定義一些 WP 常量,這非常有效。您還必須將所有訪問重定向wp-content到“whatever-content”。如果這是一個乾淨的部署,這可能不會成為問題。如果您正在修改預先存在的部署,您將不得不做一些額外的事情。 5. 將 URL 重寫為 wp-content optional RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]。這在您的 .htaccess 文件中。如果您的使用者嘗試通過wp-contentURL 訪問某些舊內容,它將被重定向到此處。 6. grep 並替換數據庫optional中對 wp-content 的所有引用。你wp-content的數據庫裡還有。如果你想免費使用 WP,你需要擺脫那些東西。我導出/mysql 轉儲了我的數據庫,對wp-content字元串進行了搜尋並將其替換為新字元串。你可能會說……如果 apache 會重寫我的 URL,我為什麼要這樣做?問題是原始碼將包含這些引用,所以如果你真的對隱藏 WordPress 感興趣,你需要這樣做。注意:在這一點上,我應該停下來並接受這行不通的現實。但我想讓T先生可憐我。 7. **wp-includes替換對原始碼和原始碼的所有引用wp-admin。**很多 WordPress 功能依賴於這兩個目錄:wp-includeswp-admin. 這意味著這些目錄名稱在原始碼中是硬編碼的。這意味著您必須創建新目錄(因為 PHP 使用底層 OS 文件系統,而不是 apache)來訪問這些目錄,然後將這些目錄寫入發出的 html 中。這簡直太麻煩了。我很快放棄了,去洗手間拉便便。

當然,我可以閱讀http://codex.wordpress.org/Hardening_WordPress並按照這些步驟操作。但我想要一個完美的網站。現在我只想把所有的時間都回來。阻止我停下來的最大事情是,我沒有在網際網路上的任何地方讀到這是大量的工作,幾乎不可能做到。相反,我讀到有人試圖這樣做,卻不知道他們是否成功。因此,對於我將通過 Apple 的 Time Machine 發送給過去的自己,請不要試圖掩蓋 WordPress。這不值得。

引用自:https://serverfault.com/questions/281881