天天看點

網絡中的防盜鍊是指什麼?什麼是盜鍊?為什麼會産生盜鍊?如何應對盜鍊?

什麼是盜鍊?

比如,别人上傳的東西,你直接拿了LINK去,貼到别的論壇或者網站,宣稱"有好東西,快來下載下傳",又或者告訴你的朋友"你要這個檔案?俺有連接配接,快下",然後在那裡接受别人的滔滔不絕的景仰之情。

“盜鍊” 的定義是:

此内容不在自己伺服器上,而通過技術手段,繞過别人放廣告的最終頁,直接在自己的有廣告有利益的頁面上向最終使用者提供此内容。 常常是一些名不見經傳的小網站來盜取一些有實力的大網站的位址(比如一些音樂、圖檔、軟體的下載下傳位址)然後放置在自己的網站中,通過這種方法盜取大網站的空間和流量。

為什麼會産生盜鍊?

一般浏覽有一個重要的現象就是一個完整的頁面并不是一次全部傳送到用戶端的。如果請求的是一個帶有許多圖檔和其它資訊的頁面,那麼最先的一個Http請求被傳送回來的是這個頁面的文本,然後通過用戶端的浏覽器對這段文本的解釋執行,發現其中還有圖檔,那麼用戶端的浏覽器會再發送一條Http請求,當這個請求被處理後那麼這個圖檔檔案會被傳送到用戶端,然後浏覽器回将圖檔安放到頁面的正确位置,就這樣一個完整的頁面也許要經過發送多條Http請求才能夠被完整的顯示。基于這樣的機制,就會産生一個問題,那就是盜鍊問題:就是一個網站中如果沒有起頁面中所說的資訊,例如圖檔資訊,那麼它完全可以将這個圖檔的連接配接到别的網站。這樣沒有任何資源的網站利用了别的網站的資源來展示給浏覽者,提高了自己的通路量,而大部分浏覽者又不會很容易地發現,這樣顯然,對于那個被利用了資源的網站是不公平的。一些不良網站為了不增加成本而擴充自己站點内容,經常盜用其他網站的連結。一方面損害了原網站的合法利益,另一方面又加重了伺服器的負擔。

如何應對盜鍊?

1.REFERER防盜鍊

referer是HTTP協定中request header的一部分,當浏覽器向web伺服器發送請求的時候,一般會帶上Referer,告訴伺服器我是從哪個頁面連結過來的,伺服器基此可以獲得一些資訊用于處理。如果referer資訊不是來自本站,就阻止通路或者跳到其它連結。

Referer防盜鍊容易破解。

2.Token防盜鍊(時間戳防盜鍊)

Token防盜鍊通過對時間有關的字元串進行簽名,将時間和簽名資訊通過一定的方式傳遞給CDN節點伺服器(CDN,Content Delivery Network,即内容分發網絡。)作為判斷依據,CDN 節點則會根據 URL 的加密形式,取出對應的過期時間,和目前伺服器時間進行比較,确認請求是否過期,過期的話,則直接拒絕;如果時間未過期,CDN 節點将根據約定的簽名算法和密文,計算加密後的值,與 URL 中的攜帶的加密串進行比較,如果相同,則請求會被認為是合法的,不合法的請求可以采取禁止通路或其他操作。

網絡中的防盜鍊是指什麼?什麼是盜鍊?為什麼會産生盜鍊?如何應對盜鍊?

1)用戶端業務伺服器生成驗證資訊,具體的加密過程需要确認如下事項:

  • a.确認過期時間的格式,預設采用UNIX時間戳格式;
  • b.确認驗證資訊中的密文,使用者計算驗證資訊,需要和 CDN 平台約定;
  • c.确認驗證資訊時加入的參數,預設為 URL 的路徑部分;
  • d.根據上文的算法說明計算驗證資訊,其中請求 URL 中的驗證參數為 _upt。

2)CDN節點驗證過程:

  • a.CDN根據約定解析取出過期時間,和目前 CDN 節點伺服器時間進行比較,确認請求是否過期;
  • b.根據上文約定好的計算方式,計算出 MD5 加密串後,和 URL 中攜帶的加密串進行比較,驗證加密串是否一緻;
  • c.如果以上兩個步驟都驗證通過,請求才會被認為是合法的,這時 CDN 會請求資源響應給用戶端,否則會被認為是非法請求,直接響應 HTTP status code 403。

繼續閱讀