专栏首页用户6517667的专栏软件安全性测试(连载2)

软件安全性测试(连载2)

1.5软件安全三要素

1. 机密性(Confidentiality)

机密性要求保护数据内容不能泄露,加密是实现机密性要求的常见手段。加密技术的过程如下。

1)发送方通过加密函数和加密密钥对数据进行加密处理,形成密文。

2)发送方将加密好的密文发送给接收方。

3)接收方接收发送方发送过来的密文。

4)接收方接收过来的密文通过解密函数和解密密钥进行解密操作,还原数据。

如果一个加密算法在第3)步没有合适的算法,这个加密过程是不可逆的,否则是可逆的。MD5是常用的不可逆的加密算法。但是并不可以说不可逆的算法是不可以破解的,比如MD5算法可以通过“彩虹表”软件来进行破解。

2. 完整性(Integrity)

完整性则要求保护数据内容是完整、没有被篡改的。常见的保证一致性的技术手段是数字签名。公元1799年2月7日,康熙皇帝驾崩,留下传位诏书“传位十四太子”,大家都知道,在皇宫里面太子争权夺位在历朝历代是都存在的,雍正为列皇子第四位,为了达到皇位,派人把诏书改为“传位于四太子”。对于这个故事是否真假已经无从考据了,但是这正反应出来软件安全中的完整性。如果当时康熙皇帝可以把诏书设置为只读模式,估计就没这事情了。

3. 可用性(Availability)

可用性要求保护资源是“随需而得”。尽管数据进行了加密,数字签名等安全措施,但是正常程序在正常使用的时候,数据必须是可用的。影响可用性的很好例子是DDOS攻击。

1.6 WEB软件安全威胁OWASP Top 10

4 OWASP Top 10与2013软件安全威胁OWASP Top 10对比图

4是2017软件安全威胁OWASP Top 10与2013软件安全威胁OWASPTop 10对比图。2017软件安全威胁OWASP Top 10分别如下。

l A1:2017-注入。

l A2:2017-失效的身份认证。

l A3:2017-敏感数据泄露。

l A4:2017-XML 外部实体(XXE)。

l A5:2017-失效的访问控制。

l A6:2017-安全配置错误。

l A7:2017-跨站脚本(XSS)。

l A8:2017-不安全的反序列化

l A9:2017-使用含有已知漏洞的组件。

l A10:2017-不足的日志记录和监控。

这些知识在本章中都将有所涉及。

1.7同源策略

同源策略中的“源”指不同的主机“HOST”、不同的子域名、不同的端口或不同的协议。程序不可以跨“源”进行调用。比如A“源”的程序不得调用B“源”中的程序。a.com通过以下代码:

<scriptscr=http://b.com/b.js></script>

加载了b.com上的b.js,但是b.js是运行在a.com页面中的,因此相对于当前打开的页面(a.com)来说,b.js的源就应该是a.com而非b.com。1展示了同源的几种不同的情形。

1 同源策略

URL

同源

原因

http://www.3testing.com/dir1/1.html

同源

http://www.3testing.com/dir2/2.html

同源

https://www.3testing.com/dir/1.html

不同源

不同协议

http://www.3testing.com:81/dir/1.html

不同源

不同端口

http://test.3testing.com/dir/1.html

不同源

不同host

l http://www.3testing.com/dir1/1.html与http://www.3testing.com/dir2/2.html是同源的。

l http://www.3testing.com/dir1/1.html与https://www.3testing.com/dir/1.html不同源的原因是协议不同,一个是http协议,另一个是http协议。

l http://www.3testing.com/dir1/1.html与http://www.3testing.com:81/dir/1.html不同源的原因是端口不同,一个是80端口,另一个是81端口。

l http://www.3testing.com/dir1/1.html与http://test.3testing.com/dir/1.html不同源的原因是主机不同,一个是www.3testing.com 主机,另一个是test.3testing.com 主机。

但是src、href属性是支持跨域操作的,比如。

<img src="https://www.mydomain.com/img/tree.gif"></a>

<ahref="http://www.mydomain.com/hello.js">…</a>

<imgsrc="http://www.mydomain.com/hello.js">

<img src="#"onerror="http://www.mydomain.com/hello.js">

1.8 HTTP协议简介

由于本章主要介绍基于WEB的安全测试知识,所以在这里很有必要对HTTP协议进行简单地介绍。

1. HTTP协议包

5是一个HTTP协议包。

5 HTTP协议包

它包括一个起始行、一到多个头域、一个结束头域的空行(CTRL+)以及一个消息实体(根据情况可能不存在)。头域是由一组“域名:域值”组成的值参对,包括“通用头域”“请求头域”“响应头域”和“实体头域”(“请求头域”“响应头域”分别在请求包和响应包中出现)。下面简单介绍一下请求包和响应包。

2. 请求包

请求包分为“POST”“GET”“HEAD”“PUT”“DELETE”“CONNECT”“TRACE”和“OPTIONS”八中类型。其中“POST”与“GET”是经常使用的。6是一个请求包。

6请求包

由于这是一个GET请求,是一个不带Body体的。一般Body体为POST参数和附件。起始行:GET/HTTP/1.1表示基于HTTP 1.1协议的GET请求。

3. 响应包

HTTP的响应代码概要如2所示

2 HTTP响应代码概要表

响应代码

内容

1XX

指示信息---表示接收到请求,继续进程

2XX

成功---表示请求已被成功接收、理解和接受

3XX

重定向---要完成请求必须进行更进一步的操作

4XX

客户端错误---请求有语法错误或者无法实现

5XX

服务器错误---服务器未能实现合法请求

常见的响应代码如下(括号内为响应短语)。

l 200(OK):客户端请求成功。

l 304(No Changed):没有改变。

l 401(Unauthorized):请求未授权,这个状态代码必须和WWW-Authenticate报文域一起使用。

l 400(Bad Request):客户端请求有语法错误,不能被服务器端理解。

l 403(Forbidden):服务器请求被收到,但是拒绝提供服务。

l 404(Not Found):请求资源不在,比如:错误的URL。

l 500(Internal Server Error):服务器内部错误。

l 503(Server Unavailable):服务器当前不能处理客户请求,一段时间后可能恢复正常。

7是一个响应包。

7 响应包

起始行:HTTP/1.1 200 OK表示返回为200(OK为200的响应短语)的基于HTTP/1.1的响应包。消息实体一般为返回的HTTP代码或者JSON代码。

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:顾翔

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Katalon官方教程——使用手动模式创建测试用例

    Katalon Studio支持关键字驱动的测试,其中测试用例由表示用户在AUT上的操作(被测应用程序)的关键字组成。这使得编程经验较少的用户可以轻松生成自动化...

    小老鼠
  • GTest的安装与使用

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • DevOps工具介绍连载(23)——Cloud Foundry

    Cloud Foundry是业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,...

    小老鼠
  • 2016年下半年10个重要的可视化发展

    大数据文摘
  • Python爬虫入门教程 2-100 妹子图网站爬取

    从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情。希望可以做好。

    梦想橡皮擦
  • 个人团队引导介绍页html源码

    雨尘
  • Chrome浏览器最牛插件之一 Vimium

    常用使用:http://www.jianshu.com/p/2ac3c064ba9c

    onety码生
  • Linux下命令行cURL的10种常见用法示例

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统...

    砸漏
  • vue相关学习站点

    本文作者:IMWeb jacksun 原文出处:IMWeb社区 未经同意,禁止转载 https://segmentfault.com/q/101000...

    IMWeb前端团队
  • SQLServer 2016安装时的错误:Polybase要求安装Oracle JRE 7更新51或更高版本

    送上2016神Key一枚:MDCJV-3YX8N-WG89M-KV443-G8249 异常处理汇总-数据库系列 http://www.cnblogs.com/...

    逸鹏

扫码关注云+社区

领取腾讯云代金券