背景:
我正在为REST Web服务设计身份验证方案。这并不是“真正”需要安全的(它更多是一个个人项目),但我想使其与练习/学习经验一样安全。我不想使用SSL,因为我不想麻烦,而在大多数情况下,它不需要设置它。
这些SO问题对于帮助我入门特别有用:
我正在考虑使用Amazon S3身份验证的简化版本(我喜欢OAuth,但对于我的需求而言似乎太复杂了)。我在请求中添加了服务器提供的随机生成的随机数,以防止重放攻击。
要解决这个问题:
S3和OAuth都依赖于对请求URL以及一些选定的标头进行签名。他们都没有在 POST或PUT请求的请求主体上签名。这难道不容易受到中间人攻击,这种中间人攻击会保留url和标头并用攻击者想要的任何数据替换请求正文?
似乎我可以通过在请求的字符串中包含请求主体的哈希值来防止这种情况发生。这样安全吗?