前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Django的电子商务网站开发(连载40)

基于Django的电子商务网站开发(连载40)

作者头像
顾翔
发布2019-12-12 10:49:39
7570
发布2019-12-12 10:49:39
举报

新年加入啄木鸟公众号,好运滚滚來!

顾翔老师开发的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中的特殊字符,比如<、>、",然而用&lt;、&gt;或quot;去替代意义就不大了。经过了手工测试,发现结果是非常让人满意的,Django框架已经帮助实现了对XSS注入的防范。

4.5 防止SQL注入

在百度百科中是这样定义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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 4.5 防止SQL注入
  • 本书参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档