跨站点脚本帮助?

Posted

技术标签:

【中文标题】跨站点脚本帮助?【英文标题】:Cross site scripting help? 【发布时间】:2011-02-24 10:23:15 【问题描述】:

我在码头服务器上执行了一段 javascript,该服务器正在向另一台服务器(wamp 服务器)上的 scoket 发送 XMLHTTPRequest。 请求被发送到套接字,但是 XHR 响应似乎被阻止了。 我对此的唯一想法是这可能是 XSS(跨站点脚本)的问题。 有没有一种方法可以让我为这个特定的请求启用跨站点脚本,或者我应该做些什么? 任何帮助将不胜感激!

【问题讨论】:

“请求被发送到套接字”——你是如何确定的?我建议不,这根本没有发生。因为这将是一个全面的安全风险。 我通过检查 php 服务器上的日志来确定这一点,在那里我可以看到我在 php 套接字的帖子上得到了 200。 【参考方案1】:

这听起来很对。浏览器跨域策略阻止对其他域的 XHR 请求。尝试使用JSONP 技术来规避此问题。

跨域策略这么容易被规避可能看起来很奇怪,但那是因为当服务器公开 JSONP 接口时,这显然是一种相互协议。

祝你好运!

【讨论】:

您的回复刚刚节省了我的 a$$, JSONP FTMFW :P【参考方案2】:

看看here,这让您可以在不使用 JSONP 的情况下跨域边界公开一个 ajax 端点——它的普通 XHR 顶部有一点跨域消息传递。

有关跨域 ajax 的确切示例,请参阅此http://consumer.easyxdm.net/current/example/xhr.html

顺便说一句,这就是俄罗斯版 Facebook(vkontakte,75 多位用户)用于其 API 的内容。

【讨论】:

这是我发送帖子的方式.. function sendInitRQ(width, height) var post = "" + width + "" + height + ""; sendPost("localhost:80/sokcet.php", post, initReturned); function sendPost(url, postdata, callback) xmlHttp=GetXmlHttpObject() if (xmlHttp==null) alert ("Browser does not support HTTP Request") return xmlHttp.onreadystatechange=callback xmlHttp.open("POST", url,true) xmlHttp.send(postdata);我以前从未使用过 JSONP?有什么帮助吗?【参考方案3】:

您不能向其他服务器发出 xmlhttprequests。你有两个选择

通过提供 javascript 的服务器代理一切。 使用<script> 标记使用该服务器上动态生成的js 从其他服务器提取数据。

【讨论】:

哦,是的,您可以 :) IE 具有 XDomainRequest,并且大多数较新的浏览器都支持 CORS。所以说你不能说是错误的,但说你可以,而不提及在哪些浏览器上也是错误的。【参考方案4】:

感谢大家的回复,但我实际上发现问题出在相同的源策略上,因为我从同一主机运行两台服务器,但端口号不同。 JSONP 似乎可以解决问题,但为了完整起见,我将尝试现在只使用一台服务器。

以下文章在背景标题下解释了我的问题。 并在表格的第四列中。

http://taossa.com/index.php/2007/02/08/same-origin-policy/

【讨论】:

以上是关于跨站点脚本帮助?的主要内容,如果未能解决你的问题,请参考以下文章

防止来自静态站点的跨站点脚本攻击

加强跨站点脚本:糟糕的验证 JSF

通过 URL 进行跨站点脚本

如何防止跨站点脚本攻击

跨站点脚本攻击

Fortify:跨站点脚本:反射