第三章 互联网安全架构
@常见的Web攻击手段
如XSS攻击,CSRF攻击,SQL注入攻击,DDos攻击等
XSS全称是跨站脚本攻击(Cross Site Scripting),为区别CSS故使用XSS
防范:对用户输入的内容进行HTML转义
CSRF全称是跨站请求伪造(Cross Site Request Forgery)
防范:1,将cookie设置为HttpOnly;2,增加tooken;3,通过Referer识别
SQL注入攻击
防范:1,使用预编译语句,转义SQL语句中特殊字符;2,使用ORM框架;3,避免明密码存放;4,处理好相应的异常
文件上传漏洞
可以通过“魔数”判断文件类型
很多类型的文件,起始的几个字节内容是固定的,因此,根据这几个字节的内容,就可以确定文件类型,这几个字被称为“魔数”。
图片开发工具包imagemagick
DDoS攻击
DDoS(Destributed Denial of Service)分布式拒绝服务攻击
要理解DDoS,得先从DoS说起,基本的DoS攻击就是利用合理的客户端请求来占用过多的服务器资源,从而使合法的用户无法获得服务器的响应。
理解了DoS攻击后,DDoS的原理就非常简单了,它指的是攻击者借助公共网络,讲庞大的计算机设备联合起来作为攻击平台,对一个或者多个目标发起攻击,从而达到瘫痪目标主机的目的。
DDoS攻击有很多类型,如依赖蛮力的ICMP Flood,UDP Flood等,还有就是利用协议或软件漏洞发起攻击。
现在最多的是前面的混合方式,即利用了协议,系统的缺陷,又具备了海量的流量,如SYN Flood,DNS Query Flood等
SYN Flood攻击
利用了TCP协议三次握手(SYN,SYN+ACK,ACK),也就是synchronize(同步),acknowledge(确认)来达成攻击目的的。
DNS Query Flood攻击
它实际上是UDP Flood攻击的一种变形,采用的方法是向被攻击的服务器发送海量的域名解析请求,
CC(Challenge Collapsar)攻击属于DDoS的一种,是基于应用层HTTP协议发起的DDoS攻击,也被称为HTTP Flood
它的原理是这样的,攻击者通过控制的大量“肉鸡”或者利用从互联网上搜寻的大量匿名的HTTP代理,模拟正常用户给网站发起请求直到该网站拒绝服务为止。
@常用的安全算法
主要包括摘要算法,对称加密算法,非对称加密算法,信息编码等
摘要算法如MD5(Message Digest Algorithm 5,信息摘要算法5,摘要长度128位),SHA(Secure Hash Algorithm,安全散列算法,摘要长度160位),十六进制编码,Base64编码,彩虹表破解Hash算法
对称加密算法是应用较早的算法,技术成熟,在对称加密算法中,数据发送方将明文(原始数据)和加密数据一起经过特殊加密处理后,生成复杂的加密密文进行发送,数据接收方收到密文后,若想读取原文,则需要使用加密使用的秘钥及相同算法对加密的密文进行解密,才能使其恢复成可读明文。
常用的加密算法包括DES算法,3DES算法,AES算法等
DES(Data Encryption Standard,数据加密标准),明文按64位进行分组,秘钥64位
AES(Advanced Encryption Standard,高级加密标准),又称Rijndael加密算法,AES作为新一代数据加密标准,汇聚了强安全性,高性能,高效率,易用和灵活等优点,设计有三个长度(128,192,256),比DES算法的加密强度更高,更为安全。
非对称加密算法,又称为公开秘钥加密算法,它需要两个秘钥,一个称为公开秘钥(public key),即公钥;另一个称为稀有密钥(private key),即私钥。公钥和私钥需要配对使用,如果用公钥对数据进行加密,只有用对应的私钥才能进行解密,而如果用私钥对数据进行加密,那么只有使用对应的公钥才能进行解密。
RSA是目前最有影响力的非对称加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
数字签名是非对称加密技术与数字摘要技术的综合运用,常见的签名算法有MD5withRSA,SHA1withRSA等
数字证书,数字证书包含以下内容:
#对象的名称(人,服务器,组织)
#证书的过期时间
#证书的颁发机构(谁为证书担保)
#证书颁发机构对证书信息的数字签名
#签名算法
#对象的公钥
X.509
不同的数字证书所包含的内容信息和格式可能不尽相同,因此,需要一种格式标准来规范数字证书的存储和校验。大多数数字证书都以一种标准的格式X.509来存储它们的信息。
证书签发
现实中,我们的身份证需要由响应的政府机关进行签发,而网络用户的数字证书则需要数字证书认证机构(Certificate Authority,CA)来进行颁发,只有经过CA颁发的数字证书才能在网络中具备可认证性。VerSign,GeoTrust,Thawte是公认的国际权威数字认证机构的“三巨头”,其中使用最为广泛的为VerSign签发的电子商务数字证书。
免费的权威签发机构有Cacert
证书校验,用户在使用数字证书之前必须先安装颁发改证书的根证书
证书管理,任何机构或个人都可以申请使用数字证书,并使用数字证书对网络通信保驾护航,要获得数字证书,首先要使用数字证书管理工具,如keytool,OpenSSL等,然后构建CSR(Certificate Signing Request,数字证书签发申请),提交数字证书认证机构进行签名,最终形成数字证书。
证书的使用,以OpenSSL为例:
1,OpenSSL安装;2,配置OpenSSL;3,生成OpenSSL证书;4,OpenSSL签发服务端证书;5,OpenSSL签发客户端证书
摘要认证,鉴于HTTPS对性能的影响和需要申请CA,所以一般采用对参数和响应进行摘要,常见的摘要算法包括MD5,SHA等
摘要认证实现:
1,客户端参数摘要生成;2,服务端参数摘要校验;3,服务端响应摘要生成;4,客户端响应摘要校验;
签名认证,相对于摘要认证,签名认证的优势在于加密时使用的是私钥,而解密时使用的是对外公开的公钥,私钥有私钥持有者保管,不需要泄露和传输给第三方,安全性大大提高。单相对于摘要认证,签名认证所使用的的非对称加密算法将消耗更多的时间和硬件资源。
签名认证实现:
1,客户端参数认证生成;2,服务端参数认证校验;3,服务端响应认证生成;4,客户端响应认证校验;
HTTPS协议,全称是Hypertext Transfer Protocal over Secure Socket Layer,即基于SSL的HTTP协议。
HTTPS既支持单向认证,也支持双向认证。
SSL的全称是Secure Sockets Layer,即安全套接层。它是一种网络安全协议,是网景在其推出的Web浏览器中同时提出的,目的是为了保障网络通信的安全,校验通信双方的身份,加密传输的数据,SSL在传输层和应用层之间进行数据通信的加密。
HTTPS协议栈:
HTTP(应用层)
SSL or TLS(安全层)
TCP(传输层)
IP(网络层)
网络接口层
SSL的继承者TLS协议,全称为Transport Layer Secure,即传输层安全协议,正逐步接替SSL成为下一代网络安全协议。
OAuth协议
OAuth协议旨在为用户资源的授权访问提供一个安全,开放的标准。