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。