Ajax,CSRF&CORS-Django REST框架

Ajax,CSRF&CORS-Django REST框架

使用Ajax、CSRF和CORS

“仔细观察一下你自己网站上可能存在的CSRF/XSRF漏洞。它们是最糟糕的漏洞--攻击者很容易利用它们,但对软件开发人员来说,这并不是那么直观的理解,至少在你被人咬伤之前是如此。”

杰夫·阿特伍德

JavaScript客户端

如果要构建JavaScript客户端以与Web API接口,则需要考虑客户端是否可以使用与网站其他部分使用的相同的身份验证策略,并确定是否需要使用CSRF令牌或CORS标头。

在与其交互的api上下文中发出的Ajax请求通常将使用SessionAuthentication...这可以确保一旦用户登录,任何Ajax请求都可以使用与网站其余部分相同的基于会话的身份验证进行身份验证。

在与其通信的api不同站点上发出的ajax请求通常需要使用非基于会话的身份验证方案,如TokenAuthentication.

CSRF保护

跨站点请求伪造保护是一种防范特定类型攻击的机制,当用户尚未从网站注销并继续拥有有效会话时,就会发生这种攻击。在这种情况下,恶意站点可以在登录会话的上下文中对目标站点执行操作。

为了防范这类攻击,您需要做两件事:

  1. 确保“安全”HTTP操作,如GET, HEADOPTIONS不能用于更改任何服务器端状态。
  2. 确保任何“不安全的”HTTP操作,例如POST, PUT, PATCHDELETE,总是需要有效的CSRF令牌。

如果你用SessionAuthentication您需要包含任何有效的CSRF令牌POST, PUT, PATCHDELETE行动。

为了发出Ajax请求,您需要在HTTP报头中包含CSRF令牌,如Django文档中描述了.

CORS

跨源资源共享是一种允许客户端与托管在不同域上的API交互的机制。CORS的工作方式是要求服务器包含一组特定的标头,允许浏览器确定是否以及何时允许跨域请求。

在REST框架中处理CORS的最佳方法是在中间件中添加所需的响应头。这可以确保CORS得到透明的支持,而不必更改视图中的任何行为。

奥托·姚维护Django-CORS-标头软件包,它可以正确地与RESTFrameworkAPI一起工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMQ2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值