﻿# 個資保護、Google Hacking 與 robots.txt 的關係與設定技巧

我想大部分人都應該知道 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 檔案的功用 (如果不知道可參考我[之前的文章](/post/2009/01/12/Talk-about-robotstxt-and-information-security.aspx))，因為 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 是給**網頁爬蟲機器人** ([Web Crawler](http://en.wikipedia.org/wiki/Web_crawler)) 看的，搜尋引擎要來抓網站網頁進行索引前，都會「禮貌性」的先抓取 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 檔案回去分析，若特定 URL 真的允許抓網頁回去才會繼續下載網頁，不過看這個檔案的 **人類**就不一定這麼有禮貌，讓駭客知道了你「不想被抓的目錄」後，反而讓駭客產生興趣，進而企圖攻擊這些你不想被知道的網頁路徑，所以選擇不將這些路徑放到 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 定義檔裡，然而，這觀念是正確的嗎？No!!! 請繼續看下去…

有些人會選擇不將機敏目錄放到 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 檔案裡，為的就是不讓「任何人與機器」知道有這個目錄的存在，但很不幸的搜尋引擎找網址的能力必你想像的還強很多，你不列在 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 裡面，還是會被知道有這些網頁的，所以無論如何，不想被搜尋引擎找到的網頁都要列入 robots.txt 定義檔中！

由於 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 檔案必須對外公開，所以每個人都能查看其內容，假設你有個網站，其前台與後台是在同一個網站下，假設網站後台的網址在 **/Backend/** 路徑下，然而你為了不讓搜尋引擎進入這個目錄，所以你會將該 URL 路徑列入 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 檔案中，例如：

```
User-agent: *
Disallow: /Backend/
```

定義 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 有個優點，搜尋引擎無論如何都不會檢索這個路徑下的所有內容，因此就算你的後端沒有任何身份驗證或忘記設定權限，至少不會被各大搜尋引擎搜索到任何資料，因此這樣的設定有助於降低被 [Google Hacking](http://en.wikipedia.org/wiki/Google_hacking) 的機會，因此無論如何，不想被搜尋引擎找到的網頁都要列入 robots.txt 定義檔中！

然而「讓駭客知道了你不想被抓的目錄後，反而讓駭客產生興趣，進而企圖攻擊這些你不想被知道的網頁路徑」這樣的論調難道不會發生嗎？要如何避免這個問題呢？關於這個問題，我建議用以下方法解決：

-   **使用獨立站台執行「後台管理功能」**

-   將「後台管理功能」從現有的網站專案中切割開來
-   設定該站台只能允許特定來源 IP 才能存取網站
-   設定 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 並拒絕所有 User-Agent 都無法檢索該網站

```
User-agent: *
Disallow: /
```

我想許多網站礙於預算問題，無法將現有的「後台管理功能」從現有的網站專案中切割開來，甚至無法多租一個空間來執行後台網站，這種情況下還是有方法的，那就是「限制後台所在的資料夾，設定特定目錄的 IP 來源存取限制」。

除此之外，我還是建議設定 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 並拒絕該目錄所有 User-Agent 都無法檢索該目錄，我最近研究出一個設定技巧，可以有效解決這個被猜到目錄位址的問題，方法如下：。

1\. 假設你的後端位址在 **/Backend/** 路徑下

2\. 建議你將此目錄改成 **/Backend87916246412145/** 路徑下，也就是**在原本目錄名稱多加上一個亂數或亂碼**，讓外人猜不到此網站後台的確切路徑（除非有內鬼）

3\. 此時你可以放心的設定 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 檔案，但是設定的內容如下：

```
User-agent: *
Disallow: /Backend
```

   **請注意：**網址的部分是 **/Backend** 而不是 **/Backend/** 喔！

透過以上設定，有以下兩個優點：

-   在整個網站中，只要有 **/Backend** 開頭的 URL 全部都會檔下搜尋引擎的檢索要求

-   也因此 **/Backend123** 或 **/BackendAdmin** 都不會被搜尋引擎索引到

-   任何人無法透過搜尋引擎找到你的機敏目錄或檔案，也可減少許多利用 [Google Hacking](http://en.wikipedia.org/wiki/Google_hacking) 發動自動化攻擊的風險，例如: [爆量SQL Injection攻擊自動化 上千個臺灣網站遭攻擊](https://www.ithome.com.tw/news/49121)

如此一來，你的後台既不怕 [Google Hacking](http://en.wikipedia.org/wiki/Google_hacking) 的攻擊，也可有效阻擋人為攻擊的機會！

**結論** 

-   無論如何，後台、以及不想被找到的網頁，都要列入到 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 定義檔中!
-   設定 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 時可考慮用本文最後所教的技巧進行設定。
-   要是怕負責上線的人誤刪 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt)，也建議不要把後台目錄取名為 Admin、Administrator、 BackEnd 或 BackOffice 之類容易記憶與猜測的名稱，因為透過 [Google Hacking](http://en.wikipedia.org/wiki/Google_hacking) 的攻擊技巧，很容易就會被搜索出後台的登入頁面！
-   善用 [Google 網站管理員](http://www.google.com.tw/webmasters/) 工具。

**心得分享**

可能還是會有人認為說，我的網站有實作登入驗證功能啊，駭客不知道密碼、我網站又沒有 SQL Injection 的問題，怎麼還有機會被入侵呢？

驗證 (Authentication) 與 授權 (Authorization) 是完全不同的兩回事，今天你實作了驗證機制，限制了登入，這並不代表所有後台功能與檔案都有做了適當的授權，我在研究 [Google Hacking](http://en.wikipedia.org/wiki/Google_hacking) 攻擊方式的時候發現到，有許多網站雖然實作了身份驗證，但卻沒有把「授權」徹底落實！

舉個例子來說，後台經常都有檔案上傳的功能，上傳的檔案通常是不刪除的，這也代表著，當管理者上傳了錯誤的檔案（例如上傳了含有使用者個資的資料），這個檔案也許短暫出現在前台頁面過一段時間，進而導致該檔案被搜尋引擎建立了索引與快取，事後你雖然把檔案更新了，但是舊的檔案還在網站上面，也代表著這個檔案還是能被使用者搜尋到，任何人只要熟悉類似 [Google Hacking](http://en.wikipedia.org/wiki/Google_hacking) 技巧，非常輕易的就能找到這些帶有個資的檔案，因此還是要設定 [robots.txt](http://zh.wikipedia.org/wiki/Robots.txt) 才能真正有效阻止這類事件再度發生！

**相關連結**

-   [從戰國策資訊外洩事件說明 robots.txt 定義檔與資安常識](/post/2009/01/12/Talk-about-robotstxt-and-information-security.aspx)
-   [Google hacking - Wikipedia, the free encyclopedia](http://en.wikipedia.org/wiki/Google_hacking)
-   [Robots exclusion standard - Wikipedia, the free encyclopedia](http://en.wikipedia.org/wiki/Robots_exclusion_standard)
-   [如何移除Google搜尋結果中「危害隱私」的Cache暫存資料？](http://briian.com/?p=5832)
-   [百度搜索帮助中心-禁止搜索引擎收录的方法](http://www.baidu.com/search/robots.html)
-   [robots.txt\_百度百科](http://baike.baidu.com/view/1011742.htm)
-   [Google 網站管理員中心](https://www.google.com/webmasters/)
-   [Webmaster Tools - My Removal Requests](https://www.google.com/webmasters/tools/removals)
-   [Rich Snippets Testing Tool](http://www.google.com/webmasters/tools/richsnippets)
-   [爆量SQL Injection攻擊自動化 上千個臺灣網站遭攻擊](https://www.ithome.com.tw/news/49121)
