我知道它违反了Same origin policy,这就是为什么通过简单的ajax请求无法实现的原因。我可以使用JSONP。但是使用JSONP进行登录听起来并不安全(没有帖子只能获得)。
通过ajax实现登录https是否有更安全的方法?
答案 0 :(得分:15)
它不仅违反了same origin policy,而且由于您呼叫的页面不安全,因此可能会受到干扰并泄露您要保证安全的所有数据。
在整个过程中使用HTTPS。
更好的是,在用户登录时继续使用HTTPS,否则您将拥有the Firesheep problem。
答案 1 :(得分:1)
正如我们在下面的评论中所讨论的那样,这就是Facebook为其注册页面所做的工作,尽管这种方法存在一些漏洞。虽然它对用户来说似乎不安全(没有锁定图标),但实际请求是通过HTTPS完成的。如果您控制了整个接收页面,那么通过GET执行JSONP请求就没那么安全了。但是,中间人攻击可能会在加载时修改接收页面,并导致将返回的凭据发送给攻击者。
从好的方面来说,没有人只是在嗅探数据包就能获得凭证:攻击必须是相当有针对性的。
关于cookie,从技术上讲,JSONP可以“返回”cookie;你只需要返回你想要设置的cookie的名称 - 值对,并在接收页面上设置一个函数来设置它们。
但是,除非浏览器以不同方式处理<script>
,否则您应该能够使用JSONP响应的响应标头以正常方式设置cookie。