嚴格控制將要跳轉的域名。如果某個業務事先已經確定將要跳轉的網站,最穩妥的方式是將其直接編碼在源代碼中,通過URL中傳入的參數來映射跳轉網址。比如傳入jumpto=1則跳轉到order.aaa.com,傳入jumpto=2則跳轉到detail.aaa.com,傳入預期之外的參數直接報錯即可。但該方式可擴展性很差,隨著業務不斷發展,將會給開發工作添加額外的麻煩。
referer的限制如果確定傳遞URL參數進入的來源,我們可以通過該方式實現安全限制,保證該URL的有效性,避免惡意用戶自己生成跳轉鏈接。
加入有效性驗證Token我們保證所有生成的鏈接都是來自于我們可信域的,通過在生成的鏈接里加入用戶不可控的Token對生成的鏈接進行校驗,可以避免用戶生成自己的惡意鏈接從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。
回答所涉及的環境:聯想(Lenovo)天逸510S、Windows 10。
嚴格控制將要跳轉的域名。如果某個業務事先已經確定將要跳轉的網站,最穩妥的方式是將其直接編碼在源代碼中,通過URL中傳入的參數來映射跳轉網址。比如傳入jumpto=1則跳轉到order.aaa.com,傳入jumpto=2則跳轉到detail.aaa.com,傳入預期之外的參數直接報錯即可。但該方式可擴展性很差,隨著業務不斷發展,將會給開發工作添加額外的麻煩。
referer的限制如果確定傳遞URL參數進入的來源,我們可以通過該方式實現安全限制,保證該URL的有效性,避免惡意用戶自己生成跳轉鏈接。
加入有效性驗證Token我們保證所有生成的鏈接都是來自于我們可信域的,通過在生成的鏈接里加入用戶不可控的Token對生成的鏈接進行校驗,可以避免用戶生成自己的惡意鏈接從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。
回答所涉及的環境:聯想(Lenovo)天逸510S、Windows 10。