Jon*_*vis 11 javascript xss jsonp localhost
这很奇怪,我想知道是否有人可以解释为什么会发生这种情况.
基本上,我一直在试图测试JSONP,所以我可以实现其他网站可以使用的JSON Web服务.我正在localhost上进行开发 - 特别是Visual Studio 2008和Visual Studio 2008的内置Web服务器.
因此,作为使用jQuery的JSONP测试运行,我实现了以下内容:
$().ready(function() {
debugger;
try {
$.getJSON("<%= new Uri(Request.Url, "/").ToString() %>XssTest?callback=?", function(data) {
alert(data.abc);
});
} catch (err) {
alert(err);
}
});
Run Code Online (Sandbox Code Playgroud)
并在服务器上..
<%= Request["callback"] %>({abc : 'def'})
Run Code Online (Sandbox Code Playgroud)
所以最终发生的事情是我在服务器上设置一个断点,我在第一个"调试器"上得到了断点.客户端脚本以及服务器上的语句.页面加载后确实会调用JSONP URL.那工作得很好.
我遇到的问题是回调永远不会执行.我在IE8和Firefox 3.5中测试了这个.两个人都不会调用回调.从未达到过捕获(错误).什么都没发生!
我已经坚持了一个星期,甚至在指定端口上的Telnet中使用手动键入的HTTP请求进行测试,以确保服务器返回格式...
callbackfn({abc : 'def'})
Run Code Online (Sandbox Code Playgroud)
..它是.
然后我突然意识到,如果我使用globalizer('.')将主机名从localhost更改为localhost,即http://localhost.:41559/而不是http:// localhost:41559 /(是的,添加一个dot到任何主机名都是合法的,它是DNS global::到C#名称空间的东西).然后它奏效了!当我刚添加一个点时,Internet Explorer和Firefox 3.5终于向我显示了一条警告消息.
所以这让我想知道,这里发生了什么?为什么后期脚本标记生成使用Internet主机名而不是普通的localhost?或者这是正确的问题?
显然这是出于安全原因而实现的,但他们试图确保什么?并且,通过使用点来处理它,我是否只是在此安全功能中暴露了一个安全漏洞?
顺便说一句,我的主机文件,虽然改为其他主机,没有任何特殊的localhost; 默认的127.0.0.1/:: 1仍然存在,下面没有覆盖.
后续行动:我通过添加以下内容将其用于本地开发目的:
127.0.0.1 local.mysite.com
Run Code Online (Sandbox Code Playgroud)
..到我的hosts文件,然后将以下代码添加到我的global.asax:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Headers["Host"].Split(':')[0] == "localhost")
{
Response.Redirect(
Request.Url.Scheme
+ "://"
+ "local.mysite.com"
+ ":" + Request.Url.Port.ToString()
+ Request.Url.PathAndQuery
, true);
}
}
Run Code Online (Sandbox Code Playgroud)
我要抛出一个答案;经过一番思考我得出了自己的结论。
这可能是一项安全功能,其实现的目的是尝试阻止 Internet 网站调用在客户端计算机上运行的 JSONP 服务。
网站可以只浏览端口列表,并在不同的端口和路径上不断调用本地主机。“Localhost”是少数几个含义动态的 DNS 主机名之一,具体取决于查询的时间和地点,这使得潜在目标容易受到攻击。是的,在“localhost”(“localhost.”)后面附加一个点(.)会产生一个有效的解决方法,这确实暴露了一个安全漏洞,但确实为开发目的提供了一个[暂定]解决方法。
更好的方法是将环回 IP 映射到主机文件中的新主机名条目,以便它在本地工作,不容易被浏览器更新“修复”,并且除了在开发工作站上之外无法在其他任何地方工作。
| 归档时间: |
|
| 查看次数: |
6166 次 |
| 最近记录: |