爲什麼這個政策甚至創建?在我看來,這只是一個缺點。如果你想,有辦法訪問另一個域(例如,JSONP)。如果沒有這樣的政策,對每個人來說都不是那麼容易?
但我想那些創建它的人很聰明,他們這樣做是有原因的。我想知道這個原因。在Ajax中拋棄相同原點策略的原因是什麼?
回答
安全。
如果它不存在,並且您的網站接受來自用戶的輸入,我可以做壞事。例如,我可以在我在您的網站上輸入的文本中添加一些javascript,它對我的域執行了一次ajax調用。當任何人查看我的輸入(就像在SO,當我們查看你的問題),該JavaScript將執行。我可以看看你的網站是如何在我的督察中工作的,將觀察者添加到你的輸入中,並竊取用戶的數據。
相同的原產地策略阻止我通過ajax將您的數據發送到我的域。要看看它是多麼容易,如果您有一個簡單的網站,只需將以下內容放在您的一個表單中並提交數據即可。
javascript:alert(document.cookie);
如果不採取措施,做的東西(你的框架可能是自動),我只是注入的JavaScript到您的網站,當有人瀏覽它,它就會執行。 (這就是所謂的JavaScript注入)
現在想象一下,我有點更具創意並添加了一些Ajax代碼....
需要以杜絕此類事情或瀏覽器中使用網絡將數字自殺。
同源策略是不最基本的功能是抵禦跨站點腳本(XSS)以上,但阻礙跨站請求僞造(CSRF)的規定。
惡意網站不能從其他網站加載數據,除非明確允許該另一主機。
E.g.當我瀏覽www.malicious.com時,我不希望它能夠訪問www.mybank.com上的我的併發身份驗證會話,請求我的一些數據從銀行的AJAX界面發送到惡意網站,並使用我的瀏覽器中繼。
爲了繞過預期用途或公共信息的限制,跨源資源共享(CORS)協議已在現代瀏覽器中實現。
如果允許跨站點請求,但在這種情況下瀏覽器不會發送任何會話數據? Malicious.com可以通過任何人都能訪問的方式訪問mybank.com! – PawelRoman 2012-10-01 18:04:04
- 1. Android:棄用startManagingCursor的原因是什麼?
- 2. JavaScript中斷點的原因是什麼?
- 3. 是什麼原因
- 4. yacc規則中符號完全相同的原因是什麼?
- 5. 調試策略找到bad_alloc的原因
- 6. BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE的原因是什麼?
- 7. 'System.IO.IsolatedStorage.IsolatedStorageException'的原因是什麼?
- 8. RejctedExecutionException的原因是什麼?
- 9. 什麼是UnsatisfiedLinkError的原因?
- 10. UnsupportedClassVersionError的原因是什麼?
- 11. ChangeConflictException的原因是什麼?
- 12. jQuery vs Browser的相同原點策略(使用OData)
- 13. 如何在Mozilla中解決相同的原產地策略
- 14. 使Android 4.0,4.0.1,4.0.2的API級別相同的原因是什麼?
- 15. PlatformID.MacOSX是什麼原因?
- 16. java.lang.reflect.InvocationTargetException:這是什麼原因?
- 17. objc_setAssociatedObject中的原子策略
- 18. SQL策略檢測是什麼原因造成的鎖定/長查詢
- 19. C++ 11放棄auto_ptr的原因是什麼?
- 20. python:在相對導入中不允許*的原因是什麼?
- 21. Kotlin中twitter4j.StreamListner IllegalAccessError的原因是什麼?
- 22. Google Chrome中的相同原產地策略實施
- 23. 爲什麼以及如何在腳本標記中免除相同的原點策略?
- 24. 在mysql查詢中計數不同的原因是什麼?
- 25. 原因拋出:IllegalMonitorStateException
- 26. init()方法拋出錯誤的原因是什麼?
- 27. 是什麼原因造成的EXC_CRASH上拋出:異常?
- 28. setBackgroundResource拋出一個空異常的原因是什麼?
- 29. 明確拋出NullReferenceException的原因是什麼?
- 30. Process.HasExited可以拋出InvalidOperationException的原因是什麼?
這似乎是一個很淺的答案。你會擴展它嗎? – Davy8 2012-01-14 15:14:40
它是一個非常基本的問題。我提供了一個基本的答案。如果你覺得應該更多,請讓我知道。 – hvgotcodes 2012-01-14 15:51:26
@hvgotcodes,無法注入JavaScript代碼做一些壞事使用現有的黑客跨域請求,如JSONP? – Sergey 2012-01-14 16:06:08