【发布时间】:2014-08-15 06:49:59
【问题描述】:
我想知道,为什么 Tapestry 的 hmac 功能不足以防止 Cross-Site-Request-Forgery。
Tapestry 将序列化的对象编码为 Base64 编码的字符串,存储在客户端;主要是用于表单提交,对提交时处理表单所需的一组操作进行编码。
tapestry 框架(5.3.6 及更高版本)使用 hmac 对上述数据进行签名。当客户端提交表单时,此数据将包含在 POST 请求中的 t:formdata 参数中,并由服务器验证。 从我的角度来看,这足以防止crsf。签名数据是在服务器上使用一个只有服务器知道的密钥创建的。 攻击者应该如何创建一个被服务器接受的有效的 t:formdata 元素? 我很困惑,因为我在互联网上找到了几个库/实现,它们为挂毯添加了 csrf 保护。 我还阅读了SO-answer,其中指出,hmac “可能”(或可能不是?)足以提供 csrf 保护。
结论:在哪些情况下,hmac 不能对 csrf 提供足够的保护?为什么?
【问题讨论】: