裏面的URL我有一個處理一個javascript一種關注「登錄後重定向」設置的JavaScript重定向允許只爲同一個域
window.location = url;
其中「URL」由GET參數提供。 這聽起來很糟糕,因爲它允許在當前域之外重定向。
所以我想知道如果有一個簡單和安全的方式檢查「url」是一個絕對的url在同一個域內,只允許在這種情況下重定向。 目前我只是檢查URL是否以「/」開頭,並且不包含「http」,但我不確定它足以完全防止打開重定向。
if (url[0] === '/' && url.indexOf('http') === -1)
{
window.location = url;
}
正如我在客戶端這樣做,我知道它仍然不完美,但以前沒有保護。
我可以使用好老的JS或jQuery。我也必須支持IE9。
後期編輯:也許我沒有提及它清楚,但「網址」應該是一個絕對的網址,沒有域的規範。 例如,我有這種地址(與最終URL參數詳細地址): http://example.com/Account/Login.aspx?ReturnUrl=%2fCheckout.aspx
我需要避免: http://example.com/Account/Login.aspx?ReturnUrl=http://otherdomain/badintention.aspx
這就是爲什麼我對上面我目前正在檢查,如果它開始由「 /「但我不確定是否足夠安全。所以我不能使用你的一些建議。
感謝
謝謝,很高興知道。不幸的是我不得不支持IE9和其他相當老的瀏覽器。我編輯了這個問題。 – AFract