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代码。