新年加入啄木鸟公众号,好运滚滚來!
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
4.4 防止XSS攻击
在百度百科中XSS攻击是这样定义的:“XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其他用户使用的页面中。” XSS攻击注入包括持久型、反射型和DOM型。最典型的一个例子是在文本框中输入一段JavaScript语句,然后在页面显示时候这个JavaScript语句被激活执行。最简单的一个例子,在收货地址输入栏中输入<img src="javascript:alert('hi')">,显示的时候看看是否javascript被执行。这个测试用XML来实现进行比较困难,因为xml不允许存在HTML中的特殊字符,比如<、>、",然而用<、>或quot;去替代意义就不大了。经过了手工测试,发现结果是非常让人满意的,Django框架已经帮助实现了对XSS注入的防范。
在百度百科中是这样定义SQL注入的:“所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过Web表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。”
其实,在第3.4.3节中有个测试用例就是用来测试是否存在SQL注入,在模糊查询的时候,SQL语句往往是这样的:select * from table where title like '%var%',其中var是用户输入的字符,在goods-testcase005中输入的var是‘%’,如果程序没有进行任何处理,这个SQL语句就变成了select * from table where title like '%%%'这样table表中的所有记录都被查询出来了。在程序中没有进行任何处理,这说明Django框架自动处理了这个注入。
除了‘%’的注入,在用户登录时候的SQL注入更加危险,正如产品代码中,判断用户是否合法,类似的SQL 语句是这样的select * from goods_user where username='usernamevar' and password='passwordvar',其中usernamevar与passwordvar是通过前端输入的,如果返回的结果不为空,则认为用户合法,否则就认为不合法。现在来设想一下:如果usernamevar= 111,passwordvar= ' or 1=1 --',这样SQL语句就变为select *from goods_user where username='111' and password='' or 1=1 --'',因为1=1是永远正确的,又由于前面是or操作,所以这条SQL语句返回记录是不为空的。因此,在loginRegConfig.xml中设计这样的测试数据。
... <!--- SQL注入测试 --> <case> <TestId>loginReg-testcase007</TestId> <Title>用户登录</Title> <Method>post</Method> <Desc>SQL注入测试</Desc> <Url>http://127.0.0.1:8000/login_action/</Url> <InptArg>{"username":"111","password":"' or 1=1 --'"}</InptArg><!--- 用户名、密码均同于initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>用户名或者密码错误</CheckWord></case>... |
---|
运行测试程序loginRegTest.py,测试通过,说明Django也已经处理了这种情况的SQL注入。
【1】百度百科
【2】《Web接口开发与自动化测试基于Python语言》,虫师编著,电子工业出版社,2016年1月
【3】《Selenium 2 自动化测试实战基于Python语言》,虫师编著,电子工业出版社,2017年4月
【4】《跟着老齐学Python从入门到精通》,齐伟编著,电子工业出版社,2016年5月
【5】《跟着老齐学Python Django实战》,齐伟编著,电子工业出版社,2017年10月
【6】《Python新手使用Django 建站的16堂课》,何敏煌著,清华大学出版社,2017年5月
【7】hornbills,支付宝即时到帐接口的python实现,示例采用django框架:http://blog.csdn.net/hornbills/article/details/40338949
【8】java虾米的博客,细说Python2.x与3.x版本区别:http://www.cnblogs.com/wangyayun/archive/2017/05/02/6794611.html
截止今日,本书连载已全部结束,如需完整版欢迎扫码购买,谢谢大家!
星云测试
http://www.teststars.cc
奇林软件
http://www.kylinpet.com
联合通测
http://www.quicktesting.net