JMeter CSRFToken认证登陆(正则提取器的使用)(转)

前几天用JMeter模拟登陆,但是这个网站开启了csrf认证,因此在post表单需要提供csrftoken认证。这里我用到了Jmeter正则提取器。

1 CSRF
CSRF(Cross-site requestforgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。它通常发生在当某个恶意Web站点诱骗用户不知不觉的从一个信任站点下载某个URL之时,这个信任站点已经被通过信任验证,因此恶意站点就利用了这个被信任状态。下图便是csrf攻击的思想:


20160419121044781.png

我在博客上也转载一篇关于csrf的介绍,有关csrf的攻击实例可以看这篇博客。

http://blog.csdn.net/lion19930924/article/details/50955000

2 解决方案
在模拟具有csrf认证的网站的登陆时,我们需要先访问一次该网站,获取服务器返回的cookie,在下次发送请求的时候带上这个cookie,则可以完成登陆。

3 JMeter CSRF TOKEN认证登陆
用JMeter模拟登陆的过程,需要用到正则提取器,获取服务器返回的cookie,具体的过程如下:

1 添加一个HTTP request sampler,命名为logintest

2 在这个request sampler中填写需要登陆的地址,以及需要登陆的用户名和密码

20160419121022593.png

3 在logintest中添加regular expression extractor,我们把它命名为csrf_token
20160419121022593.png

4 在csrf_token中我们将 Reference Name命名为 CSRF_TOKEN,regular expression是Set-Cookie: csrftoken=(.+?);,Template是

20160419121027156.png

5 同样的方法我们再添加一个regular expression extractor,命名为session_id,这里我们要获取的是服务器返回的session_id,所以它的正则表达式和csrf_token的写法是相似的。这里不再做详细描述。

6 再添加一个HTTP request sampler,命名为login,这里的地址和用户名和密码和logintest填写的保持一致,不过需要添加一个csrfmiddlewaretoken,它的值是我们在login中获取的csrf_token的值。

20160419121031804.png

7 这里我们再点击运行,就可以发现登陆成功了,JMeter模拟成功。

有关JMeter的正则表达式,大家可以通过下面这个网站进行了解:

(http://jmeter.apache.org/usermanual/regular_expressions.html)

原文:https://blog.csdn.net/lion19930924/article/details/51189210

其他教程http://www.cnblogs.com/Zfc-Cjk/p/8976232.html

你可能感兴趣的:(JMeter CSRFToken认证登陆(正则提取器的使用)(转))