Cal*_*eng 12
对于iOS应用程序正在访问的URL("API端点"),您需要@csrf_exempt在相应的视图函数上指定禁用csrf保护.
更多细节 - https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt
并通过其他身份验证方法保护这些URL,例如会话身份验证.
为了您的身份验证,您可以轻松地参考django rest框架和django tastypie所做的事情.两者都使用SessionAuthentication类来处理身份验证并保护iOS应用程序可以连接的公开URL(API端点).
参考文献: -
Django tastypie也有一个授权类,不要与身份验证混淆.它还有一个APIKey授权类,当你想要将你的django URL暴露给其他第三方开发人员时,它们可能想要构建他们自己的应用程序来与你的django URL通信以访问数据(想想"facebook APIs") .每个第三方开发人员实质上都可以提供一个唯一的API,因为您拥有APIKeyAuthorization类和为每个第三方应用程序提供的唯一API密钥,您可以确保只有"授权"的应用程序才能使用您的django URL.这是"Google+"或"Facebook"等各种大平台如何运作的本质.
django的csrf如何工作的详细信息
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-it-works
CSRF保护基于以下内容:
CSRF cookie,设置为随机值(与会话无关的nonce,因为它被调用),其他站点无权访问.
此cookie由CsrfViewMiddleware设置.它是永久性的,但由于无法设置永不过期的cookie,因此每次响应时都会发送它,该响应调用了django.middleware.csrf.get_token()(内部用于检索CSRF令牌的函数) .
所有传出POST表单中都有一个名为"csrfmiddlewaretoken"的隐藏表单字段.该字段的值是CSRF cookie的值.
这部分由模板标签完成.
对于未使用HTTP GET,HEAD,OPTIONS或TRACE的所有传入请求,必须存在CSRF cookie,并且'csrfmiddlewaretoken'字段必须存在且正确.如果不是,则用户将收到403错误.
此检查由CsrfViewMiddleware完成.
此外,对于HTTPS请求,严格的引用检查由CsrfViewMiddleware完成.这对于解决在使用会话无关nonce时在HTTPS下可能发生的中间人攻击是必要的,因为HTTP'Set-Cookie'标头(不幸地)被正在与之交谈的客户端接受HTTPS下的网站.(对HTTP请求不进行引用检查,因为在HTTP下,Referer头的存在不够可靠.)
这可确保只有源自Web站点的表单才能用于POST数据.
| 归档时间: |
|
| 查看次数: |
3547 次 |
| 最近记录: |