1. 程式人生 > >【39】WEB安全學習----Jsonp跨域安全

【39】WEB安全學習----Jsonp跨域安全

同源策略

同源策略/SOP是一種約定,它是瀏覽器最核心也最基本的安全功能,所謂同源是指"協議+域名+埠"三者相同。 同源策略限制以下幾種行為: 1、Cookie、LocalStorage 和 IndexDB 無法讀取 2、DOM 和 Js物件無法獲得 3、AJAX 請求不能傳送

跨域解決方案

  • jsonp跨域
  • 跨域資源共享(CORS)
jsonp

瀏覽器不會攔截呼叫外部靜態檔案請求,也就是src屬性,但jsonp只能以GET方式請求。

function info(result)
        {
       		alert(result);
        }
<script src=
"http://www.xx.com/jsonp.php?callback=info">

jsonp安全

一般是以jsonp方式傳輸敏感資訊,可劫持此敏感資訊導致敏感資訊洩露。

如:聯通某站jsonp介面返回使用者套餐資訊 jsonp洩露敏感資訊

QQ的JSONP介面返回使用者相關資訊 JSONP

漏洞查詢方式

在抓包或爬蟲抓取jsonp介面,檢視是否返回敏感資訊,介面是否做了響應的校檢。

修復方案

1、儘量避免跨域的資料傳輸,對於同域的資料傳輸使用xmlhttp的方式作為資料獲取的方式,依賴於javascript在瀏覽器域裡的安全性保護資料。 2、referer的來源限制,利用前端referer的不可偽造性來保障請求資料的應用來源於可信的地方,此種方式力度較稀,完全依賴於referer,某些情況下(如存在xss)可能導致被繞過。 3、token的加入,嚴格來說,這種利用javascript hijacking的方式獲取資料是CSRF的一種,不過較之傳統的CSRF不能獲取資料只能提交而言,這種方式利用javascript可以獲取一些敏感資訊而已。如果我們能讓攻擊者對介面未知,就可以實現json hijacking的防禦了。利用token對呼叫者的身份進行認證,這種方式對於呼叫者的身份會要求力度較細,但是一旦出現xss也可能導致前端Token的洩露,從而導致保護失效。 4、對於同域的json使用情況下,可以在資料的輸出頭部加入while(1);的方式避免資料被script標籤的方式引用,這可以防止一些比較有特性的瀏覽器裡導致的資料洩漏。 5、使用CORS代替jsonp 6、不要在使用cookie的情況下使用jsonp交換資料