Https的加密机制
https运行于SSL之上,SSL运行在TCP之上,是添加了认证和加密机制的HTTP。端口为443
共享秘钥加密和公开秘钥加密(其实就是对称加密和非对称加密)。非对称加密用来加密对称加密的秘钥。
三次握手和四次挥手
三次握手 四次挥手TCP保证可靠传输
1.把数据截取成合理的长度 2.数据包校验 3.应答机制 4.超时重传 5.丢弃重复数据包 6.失序重排 7.拥塞控制 8.流量控制
网络攻击
DDos攻击:利用三次握手的漏洞
1.SYN Flood攻击:客户端经历两次握手后不再向服务器端发送确认数据包。服务器端就不停地重试发送SYN+ACK包尝试客户端确认,一段时间后(SYN Timeout时间)丢弃这个未完成的连接。
预防:1.缩短SYN Timeout时间 2.限制SYN半连接的数目 3.设置SYN Cookie:给请求连接的IP分配Cookie,如果短时间内从这个IP收到大量SYN包,就认为是受到攻击,自动丢弃这个IP的SYN请求。仅只对真实IP有效,若大量伪造IP则失效。 4.设置SYN Cache:收到SYN后不着急分配系统资源,先回应一个SYN+ACK,把这个半连接保存在Cache中,等到收到ACK后再分配资源。
2.TCP全连接攻击(Connection Flood0):利用许多僵尸主机与服务器建立大量的TCP连接,并且长时间内不释放,定时发送垃圾数据包,占用服务器资源,直到服务器的内存等资源被消耗殆尽。
预防:1.限制SYN流量 2.限制每个IP的连接数 3.对恶意IP进行封禁 4.主动清除残余进程
3.Land攻击:向服务器发送源IP和目的IP都是服务器主机IP的地址
注入攻击:
1.XSS 跨站脚本:通过站内交互途径,提交一些包含JS、html等恶意代码文本,当用户访问页面时就会运行这些脚本。
预防:过分信任用户的输入而造成危害。只要是用户提交的表单就进行过滤。过滤掉某些特殊的html标签,过滤掉某些js标签,对数据进行encode操作。
2.CSRF攻击 跨站请求伪造:用户登录某个A网站,并在本地生成cookie,再访问某个恶意B网站时,恶意网站返回攻击代码并请求访问第三方网站。攻击者就会盗用用户身份访问A网站。
预防:1.当用户关闭网页时,即使清除认证cookie 2.在客户端页面增加伪随机数。在post提交数据时提供一个随机参数。由于第三方网站无法取得cookie中的参数,因此无法伪造随机数。服务器对随机数进行验证,如果不同则拒绝访问。
3.sql注入攻击:通过向表单里写入恶意sql来获取数据库信息或者篡改数据库信息等
预防:1.参数绑定,用预编译解决拼接字符串的问题。例如MyBatis中#{}可以预防sql注入 2.检查变量的数据类型和格式 3.把sql语句封装在存储过程中。
网友评论