2012-08-16 53 views
3

同源策略(SOP)經常與跨站點腳本(XSS)一起提及。但似乎在SOP的世界裏,XSS仍然時有發生。 所以我從來不清楚同源策略會阻止什麼樣的攻擊? 換句話說,設想一個沒有SOP的世界,惡意攻擊者能夠獲得的與SOP相比的真實世界的其他威力?「同源產品政策」能給我們買什麼?

我在這個網站上閱讀(http://security.stackexchange.com/questions/8264/why-is-the-same-origin-policy-so-important),「假設你登錄到Facebook並訪問在另一個瀏覽器選項卡中存在惡意網站如果沒有相同的來源政策,該網站上的JavaScript可以對您的Facebook帳戶執行任何操作,允許您執行任何操作。「這實際上讓我更加困惑,因爲我從來沒有聽說過任何一個選項卡中的網頁的機制,即使從同一個域中操縱其他選項卡。 這裏還提到(更明確地說),SOP可以防止一個窗口中的腳本在另一個窗口中操作DOM元素(http://javascript.info/tutorial/same-origin-security-policy)。但是我真的不能將這個例子與解釋的內容聯繫起來(窗口在這裏是什麼意思?這個例子似乎是在討論iframe)。總之,任何人都可以給出一些具體的例子,說明如果沒有SOP會發生什麼?

此外,我很好奇如何在一個窗口中的腳本可以操縱另一個窗口中的DOM元素,前提是兩個窗口來自同一個域。但這不是這個問題的主要過程

謝謝!

+0

我覺得OP有同樣的困惑,我有。 SOP適用於兩個方面:1.防止來自域A的腳本訪問並操縱來自域B的頁面的屬性或方法。2.阻止來自域A的腳本向域B的服務器發出請求。但是對於點2 ,現在有一個W3C標準的CORS來允許跨域請求的例外。點1仍然是不允許的。因此,在另一個選項卡中操作DOM元素實際上是處理SOP覆蓋的點1。 – 2014-11-28 10:18:40

回答

0

一個例子:對於惡意網頁,可能會向用戶已經登錄到用戶上下文的其他網頁發出一些javascript ajax請求。這個其他頁面會假設請求來自授權用戶。 例如,如果只有用戶登錄到Facebook或他的銀行,malicius腳本可以對Facebook進行一些Ajax調用併發布新狀態或銀行交易服務並進行轉賬。人們通常會同時在瀏覽器標籤頁中打開多個頁面,因此瀏覽惡意網頁的用戶很可能會同時登錄到可能被黑客入侵的敏感服務。

+0

你的意思是用戶在他/她的瀏覽器中登錄到Facebook。而一個惡意的網站,比如foo.com,包含javascript來做一個http post到facebook發佈狀態。如果用戶訪問foo.com,狀態更新將發佈到他/她的Facebook頁面? – Awaken 2012-08-16 07:13:12

+0

@確切地說。 Foo.com可以在用戶登錄其他服務的範圍內做任何事情。 – PanJanek 2012-08-16 07:39:16

2

我從來沒有聽說過任何機構的網頁在一個標籤操縱其他選項[...]似乎例如在談論IFRAME

iframe是最簡單的,但不是唯一的方法獲得跨窗口腳本。另一種方法是將攻擊者頁面window.openfacebook.com的文檔導入到一個新選項卡中。由於open返回標籤的window對象的句柄,因此一個選項卡中的腳本可能與另一選項卡中的內容交互。

沒有SOP,該腳本可以代表您在該選項卡中填寫和提交表單。

XSS仍然不時發生。所以我從來不清楚同源策略會阻止什麼樣的攻擊?

沒有SOP,每個網頁都容易受到XSS的攻擊,任何人都無法保證安全。

使用SOP,網頁對XSS 是安全的,除非他們的作者犯了一個錯誤。XSS仍然不時發生,因爲網站作者不幸地犯了錯誤。