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分别如下。
- A1:2017-注入。
- A2:2017-失效的身份认证。
- A3:2017-敏感数据泄露。
- A4:2017-XML 外部实体(XXE)。
- A5:2017-失效的访问控制。
- A6:2017-安全配置错误。
- A7:2017-跨站脚本(XSS)。
- A8:2017-不安全的反序列化
- A9:2017-使用含有已知漏洞的组件。
- 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 |
同源 |
原因 |
同源 |
||
同源 |
||
不同源 |
不同协议 |
|
不同源 |
不同端口 |
|
不同源 |
不同host |
- http://www.3testing.com/dir1/1.html与http://www.3testing.com/dir2/2.html是同源的。
- http://www.3testing.com/dir1/1.html与https://www.3testing.com/dir/1.html不同源的原因是协议不同,一个是http协议,另一个是http协议。
- http://www.3testing.com/dir1/1.html与http://www.3testing.com:81/dir/1.html不同源的原因是端口不同,一个是80端口,另一个是81端口。
- 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 |
服务器错误---服务器未能实现合法请求 |
常见的响应代码如下(括号内为响应短语)。
- 200(OK):客户端请求成功。
- 304(No Changed):没有改变。
- 401(Unauthorized):请求未授权,这个状态代码必须和WWW-Authenticate报文域一起使用。
- 400(Bad Request):客户端请求有语法错误,不能被服务器端理解。
- 403(Forbidden):服务器请求被收到,但是拒绝提供服务。
- 404(Not Found):请求资源不在,比如:错误的URL。
- 500(Internal Server Error):服务器内部错误。
- 503(Server Unavailable):服务器当前不能处理客户请求,一段时间后可能恢复正常。
7是一个响应包。
7 响应包
起始行:HTTP/1.1 200 OK表示返回为200(OK为200的响应短语)的基于HTTP/1.1的响应包。消息实体一般为返回的HTTP代码或者JSON代码。
星云测试
奇林软件
联合通测
顾翔凡言:
图是软件项目三角形。
图 软件项目三角形
下面做如下假设。
l 假设质量(Q)与范围(S)不变,时间(T)减少的情形下,必须雇佣高水平的人员或者先进的技术,即增大产品的成本(C)。同理,质量(Q)与范围不变,时间(T)增加的情形下,可以减少成本(C)。
l 假设质量(Q)与时间(T)不变,范围(S)增加的情形下,也必须增大成本(C)。同理,质量(Q)与时间(T)不变,范围(S)减少的情形下,可以减少成本(C)。
l 假设质量(Q)与成本(C)不变,时间(T)减少的情形下,范围(S)必须减少。同理,质量(Q)与成本(C)不变,时间(T)增加的情形下,可以加大范围(S)。
于是可以得到如下公式:
Q = TC/S
也就是说质量消耗单位模块的时间和金钱的乘积。从这里可以看出,完成一个功能,需要达到一定的质量,必须消耗有效的时间或者增加产品的成本投入,由此可以看出为了赶进度,盲目加班赶工是不可取的。