繁体   English   中英

JavaScript的客户端DOM开放重定向

[英]Client DOM Open Redirect for javascript

我在扫描以下代码时遇到客户端DOM开放重定向安全问题。 问题出现在我要初始化变量“ myPath”和“ myHost”的位置。

我无法理解这种攻击容易受到网络钓鱼攻击以及如何解决。 谁能帮忙吗?

var query = this.value;

var myPath = window.location.href.substring(window.location.href.indexOf("/myapp"), window.location.href.indexOf(".html"));
var myHost = window.location.href.substring(0, window.location.href.indexOf("/myapp"));
query = encodeURIComponent(query);

if(myPath!==null){
    query = query + "mysite:" + myHost + myPath;
}

问题是您正在接受用户输入(URL栏中的值),然后将其重定向到该输入。 这可能会或可能不会在任何有意义的攻击中加以利用,但是静态扫描程序无法理解您的应用程序逻辑-对于静态扫描程序,仅用户输入将直接用于重定向。

根据问题中的信息,我想不出有效的攻击方法,因为我认为它只是使用户访问过的URL相同,最后没有.html,也没有#部分(如果有) 。 因此,我认为用户将被重定向到他已经访问过的页面。 但是,这完全不意味着没有漏洞,它还取决于其他相关代码。 例如,当用户可以使用此代码访问页面而网址栏中没有任何.html时,会影响结果,另一个漏洞将允许(部分)控制网址栏,这可能是SPA之类的情况。 因此,问题中没有足够的信息来确定它是否真正安全。

对于此修复程序,请确保仅将您重定向到想要的位置,而不重定向到任何用户输入。 例如,主机部分(甚至是路径)可以由服务器写在页面中,但我知道对于SPA之类的情况并非如此。 您可以实施白名单验证,以确保不会发生恶意重定向。 也许已经很不错了,在这种情况下,您可以在使用的扫描仪中减轻发现的影响,但要考虑边缘情况,以及攻击者如何滥用这种情况。 他可以在路径中用#欺骗吗? 他可以从没有.html的url加载带有此代码的页面吗? 还是多次? 如果他注册了诸如someattack.html.hisdomain.com之类的域名并有有效的用户访问该怎么办? :)

网址栏是一件棘手的事情,因为它是用户输入,但是攻击者没有完全控制权-他必须访问应用程序页面,否则将不会加载此javascript。 仍然由静态扫描程序标记的原因是,攻击者可能拥有一定的控制权,并且在使用大量javascript的单页应用程序的情况下,由于所有的URL栏操作都在继续,因此可能还要多一些。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM