我目前正在编写一个在服务器端与Django通信的iOS应用程序。在尝试POST时,我希望通信符合Django提供的CSRF中间件。我有令牌正确传递,但为了使其完全正常运行,我也被迫在我的请求中设置一个标头值:
[request setValue:@"https://mysite.com/" forHTTPHeaderField:@"Referer"];
我的问题是,Referer值的硬编码会造成任何安全问题吗?有人可以帮我理解为什么Django会对此进行严格的检查吗?
答案 0 :(得分:2)
检查引用者是method of CSRF prevention。如果攻击者强迫受害者的浏览器使用JavaScript / HTML / Flash执行POST或GET请求,则引用者值将为空或者攻击者的CSRF漏洞源自的URL。在任何情况下,攻击者都无法在CSRF漏洞利用中将引用者设置为https://mysite.com/
,因此此检查有助于缓解攻击。
在iOS应用中设置HTTP referer绝对没有安全影响。