使用HTTP方法和URL,使用HMAC保护HTTP请求的任何漏洞?

时间:2014-05-12 09:50:48

标签: http hmac

我想使用HTTP代码303将用户浏览器重定向到使用HMAC保护的GET URL。由于请求将来自用户浏览器,因此我不会对请求标头有所了解。所以我只使用HTTP方法和URL的值生成HMAC哈希。例如,我希望浏览器执行的URL可能是:

GET /download
    ?name=report.pdf
    &include=http://url1
    &include=http://url2

这为我创建report.pdf,包含使用include查询参数指定的所有网址的内容。

我的HMAC代码会将此网址更改为

GET /download
    ?name=report.pdf
    &include=http://url1
    &include=http://url2
    &hmac-algorithm=simple-hmac
    &hmac-signature=idhihhoaiDOICNK

我可以使用此URL向用户发出HTTP 303,用户将获得他们的report.pdf。

由于我没有在签名中包含请求标头,我想知道两件事:

1)潜在攻击者可以利用我没有签署请求标头的事实吗?

2)有没有更好的方法来实现我想要做的事情?

1 个答案:

答案 0 :(得分:0)

当我意识到我在这里谈论的是签名URL时,我检查了Amazon Docs并在本文档中找到了“REST身份验证示例3:查询字符串身份验证示例”:http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html

此示例是关于通过浏览器使用的签名URL。关于签名标题,文档说:

  

您知道当浏览器发出GET请求时,它不会提供Content-Md5或Content-Type标头,也不会设置任何x-amz-header,因此这些部分都保持为空。< / p>

换句话说,亚马逊将标题排除在签名之外。

亚马逊没有提到潜在的安全漏洞,所以在我听到其他情况(或被黑客攻击:)之前,我会假设我的方法很好。