我正在设计一个可供多个客户端,网络,移动设备,第三方等使用的Web服务。我正在将REST视为可能的解决方案,我正在考虑身份验证的情况。
我正在努力保持简单和高效。为了记录,我使用的是Node.js.
据我所知,由于可伸缩性原因,我们不会建议会话。
通过https在每个请求上传递用户名和密码有什么意见?
例如:
http://myservice/users/list?username=authorized&password=mypass
这种方法有严重的缺点吗?它是否会打开安全漏洞,跨站点脚本?
对于一般的网络服务,是否有更好的解决方案?
答案 0 :(得分:5)
你永远不应该在URL中使用明文信息(它可以在 浏览器历史记录,没有混淆,也没有像apache这样的常用日志模式。
而是使用HTTP标头:
X-USER: user
X-PWD: password
优点:
如果您没有SSL,则应使用nonce方法。看看HTTP-digest以获得一些想法。如果您不需要识别特定用户(例如移动设备最终用户),则可以完全重用HTTP-digest。
尽可能重用安全设置。提出自定义身份验证方案很困难,因为存在许多安全隐患。
答案 1 :(得分:1)
您需要nonce。
否则,如果您使用SSL,那么您应该很好。