川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

测试带有CSRF Token防护的接口

作者:川石学院 日期:2022-05-25 11:31:05 点击数:

  一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“测试带有CSRF Token防护的接口”。

Python的requests类的接口测试:初始阶段(图1)

  为了防止CSRF的攻击,现在几乎所有的网站在POST请求的时候都加上了csrftoken,系统通过post参数中的一个hidden元素获取一个随机的由100个字符组成的串,在发送的时候与某个cookie值进行比较,如果二者相同,则进入下面的操作,否则这给出403异常页面。为了对这类产品进行接口测试,可以阅读源代码获得hidden元素名,通过抓包获得cookie名,然后通过post的cookie选项将hidden元素名对应的值和cookie名对应的值保持一致,即可实现。

  案例4-90:测试登录功能带有csrftoken的接口测试。

  #csrftoken

  import requests

  import unittest

  def setUp(self):

  self.correctusername ="cindy"

  self.correctpassword ="123456"

  self.discorrectusername ="jerry"

  self.discorrectpassword ="000000"

  self.url="http://localhost:8000/login_action/"

  self.token = "RNF3Y04qFeJkMwCDsTMn4gfMcyfQ2vUjXbcENLADEFyCSRp1pBdezZKwHhlSwqgE"

  self.cookie = {"csrftoken":self.token}

  class login(unittest.TestCase):

  #正确的用户名,正确的密码

  def test_correctusername_correctpassword(self):

  payload={"username":self.correctusername,"password":self.correctpassword,"csrfmiddlewaretoken":self.token}

  data = requests.post(self.url,data=payload,cookies=self.cookie)

  #验证返回码

  self.assertEqual("200",str(data.status_code))

  #验证返回内容

  self.assertIn("电子商务系统" ,str(data.text))

  在这里,仅展示输入正确的用户名和正确的密码用例。通过语句payload={"username":self.correctusername,"password":self.correctpassword,"csrfmiddlewaretoken":self.token}设置hidden参数的值为self.token,通过data = requests.post(self.url,data=payload,cookies=self.cookie)(其中self.cookie在setUp中设置为self.cookie = {"csrftoken":self.token})也设置为self.token值。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-05-25 11:31:05
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-05-25 11:31:05
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-05-25 11:31:05
  • 建筑工程专业朱同学成功转行为软件测试人!2022-05-25 11:31:05
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-05-25 11:31:05
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-05-25 11:31:05
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-05-25 11:31:05
  • 文科生转行软件测试照样拿下高薪15K!2022-05-25 11:31:05
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-05-25 11:31:05
  • 毕业1年,迷茫的他最终选择转行软件测试2022-05-25 11:31:05