2012-01-14 29 views
2

爲什麼這個政策甚至創建?在我看來,這只是一個缺點。如果你想,有辦法訪問另一個域(例如,JSONP)。如果沒有這樣的政策,對每個人來說都不是那麼容易?

但我想那些創建它的人很聰明,他們這樣做是有原因的。我想知道這個原因。在Ajax中拋棄相同原點策略的原因是什麼?

回答

0

安全。

如果它不存在,並且您的網站接受來自用戶的輸入,我可以做壞事。例如,我可以在我在您的網站上輸入的文本中添加一些javascript,它對我的​​域執行了一次ajax調用。當任何人查看我的輸入(就像在SO,當我們查看你的問題),該JavaScript將執行。我可以看看你的網站是如何在我的督察中工作的,將觀察者添加到你的輸入中,並竊取用戶的數據。

相同的原產地策略阻止我通過ajax將您的數據發送到我的域。要看看它是多麼容易,如果您有一個簡單的網站,只需將以下內容放在您的一個表單中並提交數據即可。

javascript:alert(document.cookie);

如果不採取措施,做的東西(你的框架可能是自動),我只是注入的JavaScript到您的網站,當有人瀏覽它,它就會執行。 (這就是所謂的JavaScript注入

現在想象一下,我有點更具創意並添加了一些Ajax代碼....

需要以杜絕此類事情或瀏覽器中使用網絡將數字自殺。

+1

這似乎是一個很淺的答案。你會擴展它嗎? – Davy8 2012-01-14 15:14:40

+0

它是一個非常基本的問題。我提供了一個基本的答案。如果你覺得應該更多,請讓我知道。 – hvgotcodes 2012-01-14 15:51:26

+0

@hvgotcodes,無法注入JavaScript代碼做一些壞事使用現有的黑客跨域請求,如JSONP? – Sergey 2012-01-14 16:06:08

9

同源策略是最基本的功能是抵禦跨站點腳本(XSS)以上,但阻礙跨站請求僞造(CSRF)的規定。

惡意網站不能從其他網站加載數據,除非明確允許該另一主機。

E.g.當我瀏覽www.malicious.com時,我不希望它能夠訪問www.mybank.com上的我的併發身份驗證會話,請求我的一些數據從銀行的AJAX界面發送到惡意網站,並使用我的瀏覽器中繼。

爲了繞過預期用途或公共信息的限制,跨源資源共享(CORS)協議已在現代瀏覽器中實現。

+0

如果允許跨站點請求,但在這種情況下瀏覽器不會發送任何會話數據? Malicious.com可以通過任何人都能訪問的方式訪問mybank.com! – PawelRoman 2012-10-01 18:04:04

相關問題