前端应用中经常会出现使用javascript获取当前页面URL地址进行重定向跳转的问题,例如使用window.open("url")跳转到"url"地址。
代理服务或中间服务器中的逻辑可能会将请求的url地址传入,并给前端返回js可执行文件,以达到重定向的目的。而此时若url是WEB攻击语句,例如url路径中包含javascript语法时就会造成跳转失败,例如url=http://domain/"><script>alert(/xss/)</script>)/AdminLogin.aspx
此时会导致javascript内容变为 window.open("http://domain/"><script>alert(/xss/)</script>)/AdminLogin.aspx")导致js执行失败亦或者执行了url中携带的js语句。
为了避免这种情况,可以采用urlencode对传入的url进行编码,将js语法中的关键字进行urlencode编码,上诉例子内容转码为window.open("http%3A%2F%2Fdomain%2F%22%3E%3Cscript%3Ealert(%2Fxss%2F)%3C%2Fscript%3E)%2FAdminLogin.aspx")即可正常执行重定向跳转。