背景:
我正在为REST Web服务设计身份验证方案.这并非"真正"需要安全(它更像是一个个人项目),但我希望尽可能安全地将其作为锻炼/学习体验.我不想使用SSL,因为我不想要麻烦,而且主要是设置它的费用.
这些SO问题对我开始特别有用:
我正在考虑使用简化版的Amazon S3身份验证(我喜欢OAuth,但它似乎对我的需求来说太复杂了).我正在为请求添加由服务器提供的随机生成的nonce,以防止重放攻击.
要回答这个问题:
S3和OAuth都依赖于对请求URL进行签名以及一些选定的标头.他们都没有签署 POST或PUT请求的请求体.这是不是容易受到中间人攻击,它会保留url和header并用攻击者想要的任何数据替换请求体?
看起来我可以通过在被签名的字符串中包含请求主体的哈希来防止这种情况.这样安全吗?
在基于摘要的身份验证中,nonce由服务器生成.但是,在基于OAuth的身份验证中,nonce由客户端生成.我想知道是否有人知道差异的原因?