安全测试 | 漏洞千万条,安全第一条

        测试工程师多数注重功能测试,对于安全测试的关注度较低。但是,随着互联网的发展,网络环境越来越复杂,各类软件涉及的领域也越来越多,这时系统与软件的安全问题就愈加重要了。近年来,有多个知名网站频繁出现用户信息泄漏,造成重大的损失。因此,安全测试也日益为企业所重视

        一提起软件安全,大部分人首先想到的都是信息泄露,其实,除了信息泄露,在整个软件的生命周期中,都有可能存在安全隐患,例如黑客恶意攻击、数据库信息泄露、数据篡改等。那什么是安全测试?为什么进行安全测试?如何开展安全测试?接下来,跟大家分享一下~


一、什么是安全测试?

        安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,验证产品是否符合安全需求定义和产品质量标准的过程。安全测试是检查系统对非法侵入渗透的防范能力。


二、为什么开展安全测试?

1、查找软件自身程序设计中存在的安全隐患;

2、检查应用程序对非法侵入的防范能力,保护系统不受到非法的侵入;

3、证明软件的安全性,根据安全指标不同测试策略也不同。


三、什么是安全开发生命周期?

SDL( Security development lifecycle )即安全开发生命周期,是微软提出的从安全角度指导软件开发的过程。将安全的考虑集成在软件开发的每一个阶段,利用威胁模型改进安全流程。

一个完整的安全开发流程包含从需求阶段到运维阶段共5个阶段,每个阶段都有其相应的安全职责,安全测试贯穿于软件的整个生命周期。

1、【需求阶段】:产品需要通过需求调研对此次需求中涉及到的安全点进行评估,并将安全需求点落实到PRD中,并在需求评审时与项目成员同步到位,提高大家安全意识。

2、【开发阶段】:开发在设计过程中需要对PRD中的安全点进行考虑,包含对可能的攻击面的分析和安全API以及组件的开发等。

3、【测试阶段】:测试需要在提测前,提前对PRD进行分析,预测可能存在的安全问题,并设计相关测试用例,防止测试点遗漏,组织相关人员对此进行用例评审,执行完用例并输出对应的测试报告

4、【上线阶段】:研发、测试、产品同学需要关注上线后的安全问题,要进行安全漏洞的扫描与监控,保证上线过程中不会出现漏洞,同时,还需要编写一份应急方案,方便运维等人员的使用。

5、【运维阶段】:运维同学需要定时进行安全巡查,保证软件在使用过程中不会出现安全问题,一旦出现安全问题,则在执行应急方案的同时,需要对此情况进行上报,与研发一起解决这个安全问题。


四、安全测试与功能测试的区别?

    与功能测试相比,安全测试需要转换视角,改变测试中模拟的对象。下面从以下维度比较功能测试与安全测试的不同:

1、测试目标不同

功能测试以发现Bug为目标;

安全测试以发现安全隐患为目标。

2、假设条件不同

功能测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面;

安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。

3、思考域不同

功能测试以系统所具有的功能为思考域;

安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用和数据自身安全风险与安全属性等。

4、问题发现模式不同

功能测试以违反功能定义为判断依据;

安全测试以违反权限与能力的约束为判断依据。

五、常见安全测试的验证点?

1、SQL注入

    SQL注入是指将用户的输入信息在没有经过校验的情况下,拼接到业务SQL中去执行了,造成业务漏洞或对数据库造成攻击,主要是对【服务端】的攻击。

【案例】:

str SQL=“select*fromuserswhere(name=‘张三’;DROPTABLEusers;--)”str SQL=“select*fromuserswherename=‘张三’;DROPTABLEusers”strSQL=“select*fromuserswhere(name=‘“+username+”’)and(pw=‘“+password+”’); ”str SQL=“select*fromuserswhere(name=‘1’or‘1’=‘1’)and(pw=‘1’or‘1’=‘1’); ”

2、XSS攻击

   XSS(Cross Site Scripting)跨站脚本攻击,其缩写原本为 CSS ,但与HTML中的层叠样式表(Cascading Style Sheets)缩写重名了,为了区分就将跨站脚本改为了XSS。

    经常出现在富文本框,比如邮箱出现XSS攻击,那么可以通过发邮件给另外一个人,里面写带有攻击性的脚本之类的,对方收到后就会执行,比如脚本中写获取cookie之类的,则会被获取到,然后通过这个cookie就可以去登录对方的邮箱,主要是对【客户端】的攻击。

【XSS攻击过程】:

XSS攻击有以下4个步骤:

步骤1:攻击者通过邮件或其他方式诱使用户点击包含恶意代码的链接,例如攻击者通过E-mail向用户发送一个包含恶意代码的网站test.com 。

步骤2:用户点击链接后,浏览器会在用户毫不知情的情况下执行链接中包含的恶意代码。

步骤3:将用户与test.com 交互的cookie和session等信息发送给攻击者。

步骤4:攻击者拿到这些数据之后,就会伪装成用户与真正的网站进行会话,从事非法活动。

3、CSRF攻击

CSRF(Cross-Site Request Forgery)跨站请求伪造,它是一种针对Web应用程序的攻击方式,攻击者利用CSRF漏洞伪装成受信任用户的请求,来访问受攻击的网站。主要是对【客户端】的攻击。

    比如打开了银行网站,此时就会产生session,那么此时如果打开一个含有隐藏的获取session并自动发送给银行的请求,则此时就会存在CSRF攻击。

(1)【XSS攻击有以下3个步骤】:

    步骤1:用户访问一个信任网站时;

    步骤2:在没有退出会话的情况下,攻击者诱使用户点击恶意网站,恶意网站会返回攻击代码,同时要求访问信任网站;

    步骤3:这样用户就在不知情的情况下将恶意网站的代码发送到了信任网站。

(2)【CSRF和XSS的不同之处】:

    XSS是盗取用户信息伪装成用户执行恶意活动,而CSRF则是通过用户向网站发起攻击。

    如果将XSS攻击过程比喻为小偷偷取了用户的身份证去办理非法业务,则CSRF攻击则是骗子“劫持”了用户,让用户自己去办理非法业务,以达到自己的目的。

4、业务逻辑漏洞

    比如下单时篡改订单金额、商品数量,如果接口没有做校验,则会导致数据被篡改,0元可购买商品的情况。

5、越权测试

验证手动更改url的参数,访问无权访问的页面;

拿到更高权限人员的账号和密码,验证通过接口调用等方式进行操作;

验证人员权限和数据权限是否有进行控制。

6、登录与身份验证

用户名与密码不一致时需进行校验,无法登录;

验证码需限制一次性使用;

验证每天验证码获取限制次数,避免造成短信轰炸,造成短信费用的损失;

验证密码不能带有提示,如手机号后6位数;

修改密码时需校验原密码;

订单号、流水号不能有规律,否则他人可根据规律遍历获取数据;

账号密码需要有锁定机制,比如错误输入5次锁定账号;

密码强度:大小写、特殊字符、长度。

7、文件上传与下载

需要校验文件上传次数,避免恶意上传,使得资源池爆满;

需要限制文件的类型和大小,避免木马病毒等,应该过滤一些存在安全隐患的文件;

系统资源需要登录才可访问,避免不登录系统,直接输入url可直接下载资源的情况;

校验通过../../等方式跳转到其他目录获取相关重要文件。

8、敏感信息

数据库、日志、提示等不出现敏感信息,避免泄漏;

人员的邮箱电话等信息需要加密(如数据库加密,页面数据脱敏);

需要使用https密文传输,非http明文传输。

9、重要数据

重要文件需附加水印。

10、敏感词校验

对系统带输入框的进行敏感词输入、搜索。

验证是否对敏感词有拦截,如有拦截则正常,如不能拦截则存在安全问题。

六、最后总结

        对于测试工程师来说,除了黑盒测试、白盒测试、自动化测试、性能测试外,安全测试也较为重要。安全测试与功能测试一样,在软件测试过程中,是一个非常重要的测试环节,通过安全测试,可以在一定程度上提高系统的安全性,从而保障公司的利益。

        在测试过程中,要转换看问题的视角,要将自己定位为恶意破坏规则的用户,以破坏的视角看待问题。同时,在看待PRD中的功能点时,要多角度考虑问题,需要考虑到它是否存在安全隐患,从不同角度看待问题,会有不同的结果。

        安全测试固然重要,但是安全测试需要掌握的知识还有很多,需要很多专业的技术来支撑,否则很难做好,笔者也会在后面的文章与大家分享更多关于安全测试的内容,希望可以给你带来收获。大家可以结合我文章内容进行实战性应用,在实战过程中如有任何疑问,欢迎私信与我沟通!

------------------------------------------------------------------------------

【爱测试·爱分享】

更多内容可关注公众号:测试专享

专注于性能、自动化、接口测试、中间件等技术,与您分享测试技术点滴,内容涵盖:Jmeter、PTS、Python、Selenium、小程序自动化、Linux等热门测试技术,让您在实战中提升自我。在手机上阅读所有文章,随时随地都能学习。

--------------------------------------------------------------------------------

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容