網絡爬蟲(網絡蜘蛛,網絡機器人)與Web安全

點評:網絡爬蟲(Web Crawler),又稱網絡蜘蛛(Web Spider)或網絡機器人(Web Robot),是一種按照一定的規則自動抓取萬維網資源的程序或者腳本,已被廣泛應用於互聯網領域

網絡爬蟲概述
  網絡爬蟲(Web Crawler),又稱網絡蜘蛛(Web Spider)或網絡機器人(Web Robot),是一種按照一定的規則自動抓取萬維網資源的程序或者腳本,已被廣泛應用於互聯網領域。搜索引擎使用網絡爬蟲抓取Web網頁、文檔甚至圖片、音頻、視頻等資源,通過相應的索引技術組織這些信息,提供給搜索用戶進行查詢。隨著網絡的迅速發展,萬維網成為大量信息的載體,如何有效地提取並利用這些信息成為一個巨大的挑戰。不斷優化的網絡爬蟲技術正在有效地應對這種挑戰,為高效搜索用戶關註的特定領域與主題提供瞭有力支撐。網絡爬蟲也為中小站點的推廣提供瞭有效的途徑,網站針對搜索引擎爬蟲的優化曾風靡一時。
  傳統網絡爬蟲從一個或若幹個初始網頁的URL(Universal Resource Locator統一資源定位符)開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定條件停止抓取。現階段網絡爬蟲已發展為涵蓋網頁數據抽取、機器學習、數據挖掘、語義理解等多種方法綜合應用的智能工具。
  網絡爬蟲的安全性問題
  由於網絡爬蟲的策略是盡可能多的“爬過”網站中的高價值信息,會根據特定策略盡可能多的訪問頁面,占用網絡帶寬並增加Web服務器的處理開銷,不少小型站點的站長發現當網絡爬蟲光顧的時候,訪問流量將會有明顯的增長。惡意用戶可以利用爬蟲程序對Web站點發動DoS攻擊,使Web服務在大量爬蟲程序的暴力訪問下,資源耗盡而不能提供正常服務。惡意用戶還可能通過網絡爬蟲抓取各種敏感資料用於不正當用途,主要表現在以下幾個方面:
  1)搜索目錄列表
  互聯網中的許多Web服務器在客戶端請求該站點中某個沒有默認頁面的目錄時,會返回一個目錄列表。該目錄列表通常包括可供用戶點擊的目錄和文件鏈接,通過這些鏈接可以訪問下一層目錄及當前目錄中的文件。因而通過抓取目錄列表,惡意用戶往往可獲取大量有用的資料,包括站點的目錄結構、敏感文件以及Web服務器設計架構及配置信息等等,比如程序使用的配置文件、日志文件、密碼文件、數據庫文件等,都有可能被網絡爬蟲抓取。這些信息可以作為挑選攻擊目標或者直接入侵站點的重要資料。
  2)搜索測試頁面、手冊文檔、樣本程序及可能存在的缺陷程序
  大多數Web服務器軟件附帶瞭測試頁面、幫助文檔、樣本程序及調試用後門程序等。這些文件往往會泄漏大量的系統信息甚至提供繞過認證直接訪問Web服務數據的方法,成為惡意用戶分析攻擊Web服務器的有效情報來源。而且這些文件的存在本身也暗示網站中存在潛在的安全漏洞。
  3)搜索管理員登錄頁面
  許多網絡產品提供瞭基於Web的管理接口,允許管理員在互聯網中對其進行遠程管理與控制。如果管理員疏於防范,沒有修改網絡產品默認的管理員名及密碼,一旦其管理員登錄頁面被惡意用戶搜索到,網絡安全將面臨極大的威脅。
  4)搜索互聯網用戶的個人資料
  互聯網用戶的個人資料包括姓名、身份證號、電話、Email地址、QQ號、通信地址等個人信息,惡意用戶獲取後容易利用社會工程學實施攻擊或詐騙。
  因此,采取適當的措施限制網絡爬蟲的訪問權限,向網絡爬蟲開放網站希望推廣的頁面,屏蔽比較敏感的頁面,對於保持網站的安全運行、保護用戶的隱私是極其重要的。
  基於網絡爬蟲技術的Web漏洞掃描
  前面提到的網絡爬蟲對網站的間接安全威脅,是通過對網絡站點的信息收集為不法份子的非法訪問、攻擊或詐騙作準備。隨著安全技術的發展,利用網絡爬蟲技術對Web漏洞的直接探測已經出現,這會直接影響到Web服務器的安全。Web服務器漏洞中,跨站腳本(Cross Site Script)漏洞與SQL註入(SQL Injection)漏洞所占比例很高,這兩種漏洞均可以通過對網絡爬蟲的改進來進行探測。由於缺乏足夠的安全知識,相當多的程序員在編寫Web應用程序時對網頁的請求內容缺乏足夠的檢查,使得不少Web應用程序存在安全隱患。用戶可以通過提交一段精心構造的包含SQL語句或腳本的URL請求,根據程序的返回結果獲得有關的敏感信息甚至直接修改後臺數據。基於目前的安全現狀,網絡爬蟲技術在Web漏洞掃描上的應用,大大提高瞭發現漏洞的效率。
  基於網絡爬蟲技術的Web漏洞掃描大至分為如下過程:
  1)頁面過濾:通過自動化的程序抓取網站頁面,對包含
  等標簽的Web頁面進行URL提取處理,這些HTML標簽中包含URL信息,便於惡意用戶進行更深入的Web訪問或提交操作。
2)URL匹配:對Web頁面中的URL進行自動匹配,提取由參數組合而成的動態查詢URL或提交URL,進行下一步的漏洞探測。如動態查詢URL“http://baike.xxxx.com/searchword/?word=frameset&pic=1”,其中 frameset為URL中動態的參數部分,可以進行參數變換。提交URL用於把Web用戶的輸入提交到服務器進行處理,其參數多為用戶輸入,同樣可以進行參數變換。
  3)漏洞試探:根據動態查詢URL或提交URL,自動在參數部分進行參數變換,插入引號、分號(SQL註入對其敏感)及script標簽(XSS對 其敏感)等操作進行試探,並根據Web服務器返回的結果自動判斷是否存在漏洞。如“URL匹配”中的動態查詢URL可以變換成http://baike.xxxx.com/searchword/?word= &pic=1進行跨站腳本漏洞探測。
  如何應對爬蟲的安全威脅
  由於網絡爬蟲帶來的安全威脅,不少網站的管理人員都在考慮對爬蟲訪問進行限制甚至拒絕爬蟲訪問。實際上,根據網站內容的安全性及敏感性,區別對待爬 蟲是比較理想的措施。網站的URL組織應該根據是否為適合大范圍公開,設置不同的URL路徑,在同一Web頁面中既有需要完全公開信息也有敏感信息時,應 通過鏈接、標簽嵌入網頁等方式顯示敏感內容,另外盡可能把靜態頁面等經評估安全性較高的頁面與安全性較差的動態頁面從URL上分開。當限制爬蟲時可以針對URL路徑的安全性與敏感性對不同種類的爬蟲與代理進行限制。
  限制爬蟲可以通過以下幾種方法實現:
  1) 設置robots.txt文件
  限制爬蟲最簡單的方法是設置robots.txt文件。robots.txt文件是搜索引擎爬蟲訪問網站的時候要查看的第一個文件,它告訴爬蟲程序在服務器上什麼文件是可以被查看的,如設置Disallow: /,則表示所有的路徑均不能查看。遺憾的是並不是所有的搜索引擎爬蟲會遵守這個規則,因此僅僅設置robots文件是不夠的。
  2) User Agent識別與限制
  要對不理會robots.txt文件的爬蟲訪問進行限制,首先要把爬蟲流量與普通用戶的訪問流量進行區分,即對其進行識別。一般的爬蟲程序都可以通過其HTTP請求中的User Agent字段進行識別,該字段使服務器能夠識別客戶使用的操作系統及版本、CPU類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。爬蟲的User Agent字段一般與瀏覽器的有所不同,如Google搜索引擎爬蟲User Agent字段中會有類似Googlebot的字符串,如User-Agent: Googlebot/2.1 ( http://www.google.com/bot.html),百度搜索引擎爬蟲則會有類似Baiduspider的字符串。不少Web服務器軟件如Apache,可以設置通過User Agent字段進行訪問過濾,可以比較有效的限制大部分爬蟲的訪問。
  3) 通過訪問行為特征識別與限制
  對於在HTTP請求的User Agent字段刻意偽裝成瀏覽器的爬蟲,可以通過其訪問行為特征進行識別。爬蟲程序的訪問一般是有規律性的頻率比較高,區別於真實用戶瀏覽時的隨意性與低 頻率。對這類爬蟲的限制原理與DDoS攻擊的防禦原理很相似,都基於統計數據。對於這類爬蟲的限制隻能通過應用識別設備、IPS等能夠做深度識別的網絡設 備來實現。用網絡設備限制網絡爬蟲,不僅比較全面,而且非常適合在多服務器情況下進行統一的管理,避免多服務器單獨管理有可能造成的疏漏。
  結束語
  網絡爬蟲及其對應的技術為網站帶來瞭可觀訪問量的同時,也帶來瞭直接與間接的安全威脅,越來越多的網站開始關註對網絡爬蟲的限制問題。隨著互聯網的 高速發展,基於網絡爬蟲與搜索引擎技術的互聯網應用將會越來越多,網站管理員及安全人員,有必要瞭解爬蟲的原理及限制方法,準備好應對各種各樣的網絡爬蟲
TechTarget中國

Leave a Reply

Your email address will not be published. Required fields are marked *