考虑到FireSheep已经获得的所有报道,我一直在尝试制定平衡我管理的某些网站(例如博客网站,用户提供评论的杂志网站)的HTTP / HTTPS使用的最佳做法。
对我而言,如果用户已登录,则会通过HTTPS传递所有页面。如果页面是公开的(例如博客),则加密公共页面几乎没有意义。我想做的就是通过HTTP渠道嗅探cookie来阻止会话劫持。
所以,有一个计划是:
这意味着必须通过HTTPS发布所有“更改”请求。
我们使用了很多AJAX。实际上,许多评论表使用AJAX发布内容。
显然,我无法直接使用AJAX将内容从HTTP前端发布到HTTPS后端。
我的问题是:我可以使用脚本注入(我认为通常称为'JSONP'吗?)来访问API吗?因此,在这种情况下,会有一个HTTP公共页面通过注入通过HTTPS访问的脚本将数据发送到私有后端(以便私有cookie在请求中可见)。
您可以在HTTP页面中拥有HTTPS内容吗?我知道你反过来会收到警告,但我认为HTTP中的HTTPS不是安全漏洞。
那会有用吗?它似乎适用于chrome和FF,但它的IE将成为聚会的一员!
答案 0 :(得分:1)
另一种方法是让iframe指向一个https页面,该页面可以通过https对服务器进行各种Ajax调用(GET,POST,PUT等)(与iframe相同的域也在https上)。一旦响应回到iframe中,您就可以使用HTML5 postMessage API将消息发回主窗口。
Pseudo code:
<iframe src="https://<hostname>/sslProxy">
sslProxy:
MakeAjaxyCall('GET', 'https://<hostname>/endpoint', function (response) {
top.postMessage(response, domain);
});
这适用于除IE&lt; = 7之外的所有现代浏览器,您必须使用Flash进行JSONP或跨域通信。
答案 1 :(得分:0)
JSONP的问题在于你只能将它用于GET。
你可以在其中拥有HTTPS内容吗? HTTP页面?我知道你会收到警告 另一种方式,但我认为 HTTP内部的HTTPS不是安全性 breach.breach。
在常规HTTP页面中包含HTTPS内容不会在任何浏览器中引发任何警报。 但是,我认为JSONP不会帮助你解决这个问题。使用GET发布内容和修改数据是一个非常糟糕的主意,并且容易受到其他攻击,如CSFR