1. 程式人生 > >URL跳轉漏洞

URL跳轉漏洞

URL跳轉漏洞

什麼是URL跳轉

藉助未認證的URL跳轉,將應用程式引導到不安全的第三方區域,從而導致的安全問題。

利用方法

Header頭跳轉:通過設定Location進行跳轉
JavaScript跳轉:通過window.location.href進行跳轉

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String url = request.getParameter("url");
    // 客戶端跳轉
    //response.sendRedirect(url);
    // META標籤跳轉:通過設定refresh進行跳轉
    //response.setHeader("Refresh","1;url="+url);
%>

如上,http://localhost:8080/urlJump/jump.jsp?url=http://www.baidu.com, 當訪問該連結的時候會跳轉到百度,這樣通過容易從一些知名的網站,跳轉到不安全的第三方網站,比如:http://www.qq.com/?url=http://www.demo.com ,使用者會容易以為點選的連結屬於qq的網站,以為是安全的,但是會跳轉到demo這個網站,使用者容易信任該網站,如果攻擊者設定了和qq一樣的登陸介面,那麼使用者很有可能會登陸,從而資訊被盜取。

進階

防禦

  • referer的限制如果確定傳遞URL引數進入的來源,我們可以通過該方式實現安全限制,保證該URL的有效性,避免惡意使用者自己生成跳轉連結
  • 加入有效性驗證Token我們保證所有生成的連結都是來自於我們可信域的,通過在生成的連結里加入使用者不可控的Token對生成的連結進行校驗,可以避免使用者生成自己的惡意連結從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。