首页 文章

SSL'ed JSON API是否使用cookie进行身份验证,而nonce通常是安全的?

提问于
浏览
3

如果我构建一个使用cookie中保存的会话ID进行身份验证的SSL,则添加一个nonce作为查询参数,并始终使用JSON“Object”响应进行响应(而不是使用回调的JSONP样式响应) ,它一般是安全的,特别是对抗XSRF吗?

这种API的目的只是让它可以在我自己的域上的页面上使用,并且可以通过这个API自由地公开私人数据(例如用户名和电子邮件)(但不能被其他域消费) - 并保留一个团队开发人员的合理程度 .

让我至少分享一下我对这种方法的理解,以及为什么我认为它是安全的 . 如果错的话请惹我!

  • 在我们网站的第三方域上删除的 <script> 标签将发送我的cookie,但无法解析JSON对象响应(and the response would always deliberately be a JSON object at the top level) . 此外,我需要确保影响服务器状态的API调用都受到非GET方法访问的保护,因为 <script> 标签必须使用GET,因此不能通过尝试调用状态更改调用来导致havok(换句话说) ,就HTTP方法而言,API将依赖于REST . 另外,我故意不支持JSONP,因为这将是一个安全漏洞 .

  • 用于劫持cookie(会话)的中间人不是问题,因为我使用SSL和有效证书 .

  • 重放攻击是暂时受到限制的问题,因为使用nonce将限制重放HTTPS请求所需的时间,因为服务器将确保API调用仅在少量时间内有效一种典型的随机验证方式 .

  • XMLHttpRequest无法进行跨域调用,因此无法从我的站点请求任何内容 .

  • CORS(交叉ORigin资源共享)不受关注,因为我没有与HTML 5关联的crossdomain.xml文件或任何其他跨域支持广告 .

  • 第三方网站中的iframe无法访问该iframe中的任何数据,因为我对此做出了响应 .

EDIT: 正如russau所说,nonce还可以防止甚至跨域GET请求(即 <script> 标签) . 在具体考虑这个问题时,我喜欢在'POST' API调用中要求一个nonce,而这个调用本身并不受保护;它应该是只有XmlHTTPRequest 's on the same domain can then generate a nonce to begin with. This seems to be a simple way of making the generation of nonce'的开发人员友好的情况 . (即,网站/ javascript开发人员没有任何服务器端 - 只需从你用来开发的相同API中询问你的nonce,并在你得到'bad nonce'响应之前用该nonce发出请求 - 然后要求一个新的一,并重复 .

1 回答

  • 1

    我能想象的唯一攻击是DNS rebinding . 如果您的网络服务器配置正确(基于名称的虚拟主机应该足够),您应该非常安全 .

相关问题