Jmeter访问网站返回403(CSRF verification failed. Request aborted.)

发布时间 2023-06-28 19:30:20作者: 丛影HHZ

django网站自带CSRF校验,所以jmeter直接请求时会出现校验不通过的情况

一、CSRF校验

CSRF是指跨站请求伪造,CSRF攻击的流程大概是我们登录网站A后存在本地的cookie,之后打开了另一个危险网站B,这个网站B使用本地cookie向网站A发起请求(该请求不是用户主动发起,是个恶意请求),网站A误以为是用户本人发起的请求,从而绕过登录执行一些本人才能执行的非法操作,这就是说网站A遭到了CSRF攻击
CSRF校验就是为了避免这种攻击,django的CSRF校验是通过同时收到csrftoken和csrfmiddlewaretoken,再对这两个值进行比较校验

二、问题解决

根据以上得知,我们用jmeter 发起请求时需要带csrftoken和csrfmiddlewaretoken

  1. 使用一个get请求get_cookie,获得csrftoken和csrfmiddlewaretoken
  2. 添加HTTP Cookie Manager获得Cookie中的csrftoken,并自动在正式请求Request2时带上这个Cookie
  3. 添加察看结果树
  4. 运行请求get_cookie,查看返回

    可以看到返回中带有一个隐藏属性<input type="hidden" name="csrfmiddlewaretoken"……>
    这个就是要找的值
  5. 在get_cookie请求添加Xpath提取器,解析返回值,取csrfmiddlewaretoken放入到变量csrfmiddlewaretoken中
  6. 在请求Request2中添加参数csrfmiddlewaretoken
  7. 再次请求成功