互联网安全架构------------总结参考资料来自淘宝龙隆的《大型分布式网站架构设计与实现》

  文本太难看的话可以直接看思维导图更直观,也可查看有道云笔记(排版可能更好看一点):
http://note.youdao.com/noteshare?id=c896ed59a577a6caf5b26600a4e3689b&sub=8E90D663DBE74331BC41A711C586742F

一、常见Web攻击手段

1.XSS攻击:跨站脚本攻击(Cross site Scripting)

攻击原理:通常是在网页中嵌入恶意脚本程序(通过<script>alert("")</script><!-等形式)

防范方法:对用户输入的数据进行HTML转义处理,如“<”、">"、"'"、““”等;

如今很多开源框架也自带HTML转移功能,可以利用自带的功能做处理

2.CRSF攻击:跨站请求伪造(cross site request forgery)

攻击原理:通过伪装来自受信任用户的请求(通过获取cookie信息或者用户没有登出而直接访问某个网站)

防范方法:

a.将cookie设置为HttpOnly(如Java中的servlet直接通过response的setHeader方法配 置)

b.增加token

c.通过Referer识别(HTTP头中有个字段Referer记录了该HTTP请求的来源地址,通过request.getHeader("Referer")获取Referer值进行验证)

3.Sql注入攻击

攻击原理:恶意用户将sql指令伪装成参数传递到后端数据库执行

(通过拼接sql,如where 1=1 or 等)

防范方法:

a.使用预编译语句:preparedStatement(通过使用参数占位符来替代需要动态传入的参数)

b.使用ORM框架:如Hibernate、mybatis等

c.避免免密码明文存放,一般密码使用MD5加密(可以利用加盐增加复杂度)

4.文件上传漏洞

攻击原理:通过上传恶意的可执行文件和脚本或者将文件上传服务器当做免费的文件存储服务器使用

防范方法:a.不能简单通过后缀名称来判断文件的类型,因为恶意攻击可以通过更改后缀名来伪装,建议使用魔数校验(魔数:很多类型的文件,起始的几个字节是固定的,这几个字节称为魔数)

b.imagemagick等图片处理工具将图片压缩,破坏恶意用户上传的二进制可执行文件的结构

5.DDOS攻击(Distributed Denial of Service)分布式拒绝服务攻击

攻击原理:攻击者借助公共网络,将数量庞大的计算机设备联合起来作为攻击平台,对一个或多个目标发动攻击,从而达到瘫痪目标主机的目的

常见攻击手段:

5.1 SYN Flood

TCP三次握手:

a.客户端发送一个包含SYN(Synchronize同步)标识的报文,SYN报文会指明客户端的端口号及TCP连接的初始***

b.服务器在收到客户端的SYN报文后,会返回一个 SYN+ACK的报文,表示客户端请求被接收,同时TCP***被加一

c.客户端在接收到服务端的SYN+ACK报文后,也会返回一个ACK报文给服务端,同样,TCP序号被加一,TCP连接建立完成

攻击原理:

a.TCP协议为实现可靠传输,在三次握手过程中设置了异常处理机制,第三步如果服务器没有收到客户端的ACK报文,服务端一般会重试(重发SYN+ACK报文)。重发一般会进行3到5次,大约每隔30秒左右轮询一次等待队列,重试所有客户端;同时服务器发出SYN+ACK报文之后会预分配一部分资源给即将建立的TCP连接,这个资源在等待重试时一直保留,由于服务器资源有限,可以维护的等待列表超过极限后就不再接收新的SYN报文

b.攻击者利用TCP的三次握手过程,伪造大量的IP地址给服务器发送SYN报文,由于伪造的IP地址不存在,所以不可能从客户端得到回应,服务器端将维护非常大的半连接等待列表,同时不断遍历重试,直至耗尽服务端资源

5.2 DNS Query Flood

向被攻击的服务器发送海量的域名解析请求。通常,这些域名是随机生成的,大部分根本不存在,并且通过伪造端口和客户端IP,防止查询请求被ACL(访问控制列表)过滤。DNS服务器接收到域名解析的请求后会先查缓存,当没有缓存并且无法由该DNS服务器解析时会向上层DNS服务器递归查询域名信息,直到全球互联网的13台根DNS服务器。大量的不存在的域名解析请求给服务器带来很大负载,造成DNS服务器解析域名超时

5.3CC攻击(Challenge Collapsar)

攻击者通过控制的大量“肉鸡”(被控制的用户计算机)或者利用从网上搜寻的大量匿名的HTTP代理,模拟正常用户给网站发起请求直到该网站拒绝服务为止。这些精心构造的HTTP请求会避开CDN以及分布式缓存,导致服务器需要进行多次DB查询或者一次请求返回大量的数据,加速系统资源耗尽

6.其他攻击手段

a.DNS域名劫持

b.CDN回源攻击

c.服务器权限提升

d.缓冲区溢出

二、常用的安全算法

1.数字摘要

MD5(信息摘要算法5):摘要长度128位

SHA(安全散列算法):SHA-1基于MD4算法,摘要长度160位,运行速度比MD5更慢,但更为安全

十六进制编码:与十进制对应关系:0~9对应0~9,A~F对应10~15

Base64编码:在Base64中可打印字符包括字母A~Z、a~z、数字0~9这62个字符,

再加上两个不同 系统中对应不同的打印符号

彩虹表**Hash算法:采用笨拙的方法,一一穷举存储明文和密文的所有组合,非常庞大

2.对称加密算法

介绍:加密方和解密方使用同一个**,

特点是算法公开、计算量小、加密速度快、加密效率高;

优势在于加解密的高速度和使用长**时的难**性

常见算法:

DES算法:明文按64位进行分组,**长64位,但事实上只有56位参与DES运算原版DES密码的**长度容易被暴力**,因此演变出3DES算法,使用3条56位的**对数据进行三次加密,是DES的一个更安全的变形

AES算法:汇聚了强安全性、高性能、高效率、易用和灵活等优点,

设计有三个**长度(128、192、256)

3.非对称加密算法

介绍:又称为公开**加密算法,需要两个**,一个是公钥,一个私钥。公钥和私钥需要配对使用。如果用公钥对数据进行加密,只有对应的私钥才能解密;如果使用私钥对数据进行加密,只有对应的公钥才能解密;因为加密和解密使用的是不同的**,所以才称为非对称加密算法

RSA算法:是目前最有影响力的非对称加密算法,它能够抵抗到目前为止已知的所有密码攻击,基于一个十分简单的数论事实:将两个大素数相乘十分容易,但反过来想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加***

4.数字签名

签名认证是对非对称加密技术与数字摘要技术的综合运用。

常见数字签名算法:

MD5withRSA:采用MD5算法生成需要发送正文的数字摘要,

使用RSA算法来对正文进行加密和解密

SHA1withRSA:采用SHA-1算法生成正文的数字摘要,

使用RSA算法对摘要进行加密和解密

5.数字证书

又称电子证书,类似于我们的身份证

5.1包含内容:

a.对象的名称(人、服务器、组织)

b.证书的过期时间

c.证书的颁发机构(谁为证书担保)

d.证书颁发机构对证书信息的数字签名

e.签名算法

f.对象的公钥

5.2大多数数字证书的标准格式采用的是X.509

5.3证书签发:由数字证书认证机构(CA)来进行颁发

5.4证书校验

5.5证书管理

5.6使用keytool、OpenSSL等工具

三、摘要认证

原理:对参数和响应进行摘要

实现:

a.客户端参数摘要生成

b.服务端参数摘要校验

c.服务端响应摘要生成

d.客户端响应摘要校验

四、签名认证

原理:加密时使用私钥,解密时使用公钥;相较于摘要认证,签名认证的非对称加密算法将消耗更多的时间和硬件资源

实现步骤

1.客户端参数签名生成

2.服务端参数签名校验

3.服务端响应签名生成

4.客户端响应签名校验

五、HTTPS协议

基于SSL的HTTP协议(HTTP协议的安全版)

1.特点

a.整个通信过程都是经过加密的

b.**随机生成

c.通过数字证书验证通信双方的身份,以此保障信息安全

SSL/TLS

SSL:全称Secure Sockets Layer(安全嵌套层)

TLS协议:SSL协议的继任者,全称Transport Layer Security(传输层安全协议)

位于应用层与传输层之间

六、OAuth协议

1.诞生的背景:满足第三方开发者接口的资源授权认证

2.OAuth协议旨在为用户资源的授权访问提供一个安全、开放的标准

3.OAuth协议并不需要触及用户的账户信息,即用户名密码,便可以完成对用户信息的授权

历经OAuth1.0、OAuth1.0a、OAuth2.0等几个版本

 

备注:

1.思维导图:互联网安全架构------------总结参考资料来自淘宝龙隆的《大型分布式网站架构设计与实现》

xmind原件地址

链接:https://pan.baidu.com/s/1PhWsiIetm_XxdiYQTODBng

提取码:d4jb