3

我目前正在编写一个在服务器端与 Django 通信的 iOS 应用程序。尝试进行 POST 时,我希望通信符合 Django 提供的 CSRF 中间件。我正确传递了令牌,但为了使其功能齐全,我还被迫在我的请求中设置标头值:

[request setValue:@"https://mysite.com/" forHTTPHeaderField:@"Referer"];

我的问题是,对 Referer 值进行硬编码会带来任何安全问题吗?有人可以帮我理解为什么 Django 会对此进行严格检查吗?

4

1 回答 1

2

检查引用者是CSRF 预防的方法。如果攻击者强制受害者的浏览器使用 JavaScript/HTML/Flash 执行 POST 或 GET 请求,那么引用值将是空白或攻击者的 CSRF 漏洞源自的 URL。在任何情况下,攻击者都无法将引用者设置为https://mysite.com/CSRF 漏洞利用,因此此检查有助于缓解攻击。

在 iOS 应用程序中设置 HTTP 引用对安全性影响绝对为零。

于 2013-03-14T03:34:59.657 回答