亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么跨域Ajax是安全問題?

為什么跨域Ajax是安全問題?

白衣非少年 2019-11-27 11:19:27
為什么決定使用XMLHTTPRequest進行XML調用不應該跨域邊界進行調用?您可以檢索JavaScript,圖像,CSS,iframe以及我可以想到的來自其他域的幾乎所有其他內容。為什么不允許Ajax HTTP請求跨越域邊界?考慮到我可以看到它被濫用的唯一方法,這似乎是一個奇怪的限制,那就是如果有人要向頁面中注入Javascript。但是,在這種情況下,您只需在文檔中添加一個img,腳本或iframe元素即可獲取該文件以請求第三方URL并將其發送到服務器。[編輯]一些答案指出了以下原因,讓我們指出了它們沒有創建不允許這樣做的主要原因的原因。XSRF(跨站點請求偽造,也稱為CSRF,XSRF)您可以完全不使用XSRF進行攻擊。通常,根本不使用XMLHTTPRequest,只是因為很難以與所有主要瀏覽器兼容的方式創建XMLHTTPRequest。如果希望他們加載URL,只需在URL上添加一個img標記就容易得多。發布到第三方網站<script type="text/javascript">  $.post("http://some-bank.com/transfer-money.php",          { amount: "10000", to_account: "xxxx" })</script>可以完成<body onload="document.getElementById('InvisbleForm').submit()"    <div style="display:none">        <form id="InvisbleForm" action="http://some-bank.com/transfer-money.php" method="POST">            <input type="hidden" name="amount" value="10000">            <input type="hidden" name="to_account" value="xxxxx">        </form>    </div></body>JPunyon:為什么要將該漏洞保留為新功能您不會再造成任何不安全感。您只是給想要以某種方式使用它的開發人員帶來不便。任何想將此功能用于邪惡(又稱“真棒”)的人都可以使用其他方法來實現。結論我將bobince的答案標記為正確,因為他指出了關鍵問題。因為XMLHTTPRequest允許您使用憑據(cookie)將其發布到目標站點,并讀取從站點發送回的數據以及發送人員憑據,所以您可以編排一些javascript,這些javascript可以提交一系列表單,包括確認表單,并附有為防止XSRF而生成的隨機密鑰。這樣,您就可以像銀行一樣瀏覽目標站點,而銀行的網絡服務器將無法斷定,不僅僅是提交所有這些表格的普通用戶。
查看完整描述

3 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

為什么不允許Ajax HTTP請求跨越域邊界。


因為AJAX請求是(a)使用用戶憑據提交的,并且(b)允許調用方讀取返回的數據。


這些因素的組合可能導致漏洞。有建議添加一種省略用戶憑據的跨域AJAX形式。


您只需將img,腳本或iframe元素添加到文檔中


這些方法均不允許調用者讀取返回的數據。


(除非腳本經過故意設置以允許這種情況,允許的跨域腳本編寫,或者有人進行了可怕的模仿)。


您可以完全不使用XSS進行攻擊。發布到第三方網站


這不是XSS攻擊。這是跨站點請求偽造攻擊(XSRF)。有解決XSRF攻擊的已知方法,例如包含一次性令牌或加密令牌,以驗證提交是否有意來自用戶并且不是從攻擊者代碼啟動的。


如果您允許跨域AJAX,則將失去此保護措施。攻擊代碼可以從銀行網站請求一個頁面,讀取其中的所有授權令牌,然后在第二個AJAX請求中提交它們以執行轉移。那將是跨站點腳本攻擊。


查看完整回答
反對 回復 2019-11-27
  • 3 回答
  • 0 關注
  • 672 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號