2009-02-25 41 views
7

假設我有一個網站,並且我沒有crossdomain.xml或clientaccesspolicy.xml。當存在例如crossdomain.xml和clientaccesspolicy.xml時,什麼意思? PHP /捲曲?

這意味着人們無法通過Silverlight或Flash應用程序訪問我的網站。

但他們可以用,說捲曲在PHP(或其他語言中的等價物)從我的網站獲取信息,並通過REST或WebService提供給他們的Silverlight和Flash應用程序等

  • 有人可以解釋這些限制如何保護我的網站,例如來自跨域腳本?

  • 什麼是他們通過PHP/cURL和其他通過腳本訪問我的網站無法完成的保護?

回答

12

PHP是服務器端技術,代碼在服務器上執行,而不是在用戶的機器上執行。 Silverlight是一種在用戶機器上運行的客戶端技術。

如果Silverlight代碼可以對任何域進行任意的Web請求,它將打開大量跨站腳本攻擊的大門。

這種情況下的圖像:
鮑勃去www.OnlineBanking.com並登錄檢查他的帳戶餘額。他通過導航到不同的地址離開這個網站。他沒有點擊「註銷」,所以他仍然登錄(或者,他打開一個新的瀏覽器窗口/選項卡,使銀行網站仍然打開)。
Bob瀏覽到包含Silverlight應用程序的evil.com。
Silverlight應用程序已下載並在Bob的機器上運行。
此應用程序向www.OnlineBanking.com/secretaccountdetails.html發出網絡請求。該文件需要認證才能閱讀(evil.com未經過認證,因此無法訪問它)。
Bob但IS已通過身份驗證,並且請求成功。 silverlight應用程序可以讀取這個文件的內容並做任何它喜歡的事情(包括髮送給evil.com)。

Silverlight中的跨域請求限制可防止發生上述情況。當Silverlight應用程序向OnlineBanking.com發出請求時,它將檢查跨域策略文件,因爲該應用程序是從其他域中提供的。由於OnlineBanking.com沒有允許跨域請求的策略文件,因此請求失敗,並且Silverlight應用程序無法下載secretaccountdetails.html。