【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介面返回使用者套餐資訊
QQ的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交換資料