2011-08-10 94 views
4

我熟悉持久性和非持久性XSS。 我也知道約Same origin policy,可以阻止/限制源自一個網站頁面的請求轉到另一個網站服務器。這讓我認爲,相同的原始策略至少可以阻止非持久性類型的XSS攻擊(因爲在持續型攻擊中,惡意代碼來源與被竊取的私有信息相同)。 我的理解是否正確? SOP可以用來阻止/減少這些攻擊嗎?跨站點腳本攻擊和相同的源策略

編輯:好的我在瀏覽器端調用2個腳本之間的方法和調用另一個網站上的HTTP POST之類的方法之間存在混淆。謝謝你的回答jakber。

現在我還有另外一個問題,是不是能夠防止Cross-site request forgery? 維基百科中提供的示例談到Bob訪問由Mallory在聊天論壇上創建的惡意圖像標記。但是,根據SOP規則,惡意腳本不應該能夠訪問銀行的cookie。我在這裏錯過了什麼嗎?

+0

SOP是不是你啓動或停止的東西。它始終適用於您的瀏覽器,所以不幸的是它不會停止CSRF。在未來,也許像CSP這樣的東西可能能夠阻止這些攻擊,但目前基於令牌的方法是避免CSRF的最佳方式。 – Erlend

回答

6

通常沒有。

非持續或反映的XSS攻擊利用輸入,該輸入在沒有正確清理的情況下被回顯爲頁面內容,而不會持續它。在這兩種情況下,注入的腳本似乎都來自被利用的域。

例如,如果你在PHP中做到這一點:echo $_GET['param']併發送一個鏈接頁面包含 ?param=<script>alert('got you!');</script> 它是一個非持續性XSS攻擊,以及同源策略無關,用它做什麼人。

同源意味着您不能直接在其他域上注入腳本或修改DOM:這就是爲什麼您需要先找到XSS漏洞。

+0

感謝您的回答。您對我的新編輯有任何意見嗎? – Methos

+0

SOP不適用於圖像,樣式,iframe和腳本元素的src,也不適用於例如表單的目標。但它適用於XmlHttpRequest,所以它可以阻止CSRF的這個特定攻擊向量。另見https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet – jakber

0

SOP通常不能阻止XSS或CSRF。

對於XSS,jakber的回答已經提供了一個很好的解釋。我只想補充一點,稱這個漏洞爲「跨站點」的原因是因爲攻擊者可以將代碼(例如<script src="...">)注入目標頁面,該頁面從另一個網站加載惡意JavaScript,該惡意JavaScript通常由攻擊者控制。從另一個網站加載Javascript不會被SOP拒絕,因爲這會破壞網絡。

對於CSRF,SOP不能阻止它在大多數情況下,因爲SOP不會阻止網站A至GET和POST請求發送到網站B.