ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从HTTPS到MySQL-会话保持的攻防与数据库的真面目

从HTTPS到MySQL-会话保持的攻防与数据库的真面目 从 HTTPS 到 MySQL会话保持的攻防与数据库的真面目我的github(https://github.com/xcx55/ubuntu-linux-project)感谢各位大佬参观我的github源笔记http826-9-16、HTTP9→https26-9-16、HTTP10结尾 会话26-9-16、mysql1 配置mysql26-9-14、mysql是什么/主流mysql/服务器数据库表三者关系26-9-17HTTP 章的最后一天两块硬骨头一次啃完HTTPS 为什么安全、登录之后服务器凭什么记住你。啃完顺理成章推开下一扇门——表单提交的数据最后去哪了MySQL。一、HTTP 的软肋不安全是全方位的先立结论HTTP 比 HTTPS 快但 HTTPS 安全。而且要补一刀HTTP 的 POST 方法提交参数和 GET 方法提交参数都不安全——一个裸奔在 URL 里一个裸奔在正文里线路上的中间人看得一清二楚。还有个阴暗的玩法叫代理URL 的功能路由花样多就可以有代理服务——浏览器作为代理你输入对象、触发搜索服务、传参数浏览器替你去请求。往坏了用就是木马病毒HTK 这种工具是劫持了几乎所有进程——木马开启一个代理软件网络传输的数据就都被劫持了你发什么它先看什么。二、HTTPS加密层加在应用层里HTTPS 架在整改后的 HTTP 之上——HTTP 协议和 SSL 协议之间做了加密解密的封装发送方向在 HTTP 报文交给传输层之前先完成加密接收方向在第一次回调函数之前将完整报文进行解密——回调拿到的已经是明文所以应用层代码完全不用改。一个精妙的问题为什么不在传输层上、HTTP 变 HTTPS 之前被恶意读取答案不在网络里在操作系统里这时它们在一个进程内——拥有栈、内核栈其他进程是不能读取的操作系统给予保护进程/线程之间相互独立直到消息从网卡出来才有机会被截获。所以加密必须在应用层内部完成出了网卡的消息必须是密的。这又一次印证了分层思想——安全是跨层需求但在能被保护的最后一层应用层落地。三、会话保持HTTP 为什么要记性HTTP 本身是无连接的只是底层 TCP 的第一层是连接的每个请求都是新面孔。但现实是一个站点记不住你这个站点就很难用就算登录成功了、3xx 重定向到了首页——后面看视频**后端蒙蔽了你是谁**很多功能都要求登录而没有登录数据服务端怎么办所以 HTTP 需要会话保持功能。第一版方案Cookie。第一版Cookie——把凭证存在客户端应答里有Cookie 报头浏览器把它存进本地客户端文件或内存还有过期时间后面每次发起请求浏览器主动把 Cookie 数据带上服务端每次就这样验证你是不是合法用户——需要用户认证的功能就通了Cookie 值本质是名字和密码的映射。但 Cookie 保存在本地就是有危险的一旦有人把你的 Cookie 文件盗走了就是盗号——伪造报头、直接冒充浏览器服务端分不出真假。第二版Session ID——把账本搬到服务器改进方案一般叫session id将登录的名称和密码维护在服务器放在其机器的文件里服务端只把一个**编号session id**返回给客户端放在本地——客户端丢的不再是密码而是一张取件码就算 id 被截获账本用户名密码还在服务端手里。但 id 还是没有彻底解决安全问题于是服务端再加一道IP 相较于之前发生了改变就拦截这次 Cookie 访问发起重新登录的 HTML 请求——凭证环境双验证。这轮攻防的启示客户端持有的秘密越少、越廉价系统越安全——从存密码到存编号再到编号绑定环境安全性是一步步把秘密往服务端收的过程。四、HTTP 章收官回顾一下整条链从手搓len\r\n协议出发一路走过URL 全网唯一文件路径 → 请求/应答报文 → 状态码驱动的浏览器行为 → GET/POST 表单传参 → 资源路由和功能路由 → HTTPS 加密 → Cookie/Session 会话保持。应用层的三大件也定型了Request、Response、Protocol 三类——序列化和反序列化是为了去语言化、更是为了拓展和屏蔽差异把所有语言统一转成一个字符串解包固定三层这样解耦写法才优秀。五、推开 MySQL 的门数据库的真面目表单提交的数据、session 文件里的账本——总要有个地方放。文件能放为什么还要数据库笔记里的回答很直白从用户角度文件不方便。不方便在哪继续往下拆。MySQL 是一种网络服务MySQL 实际上是一种网络服务本质是基于 Cmysql/ Smysqld的结构——客户端叫 mysql服务端叫mysqld带 d 的就是守护进程安装之初只支持一个超级账号——root 管理员先保证 root 能登录再依据 root 批量创建管理员和普通用户数据库是操作系统的一部分默认只能超级管理员安装装完只有超管能进之后才有账号管理普通用户才能使用。数据库本质还是文件最锋利的一句话来了数据库本质还是操作文件本质还是文件——建立数据库就是建立文件夹建立表就是建立文件。只是这些文件不由程序员直接操作而是程序员通过数据库服务来操作——一个程序员专门写好的服务就叫数据库。所以DB数据库 目录表 文件一般一个应用建立一个数据库。服务器、数据库、表三者关系服务器mysqld跑在网络上的守护进程管理下面所有的数据库数据库DB一个目录一个应用的账本总量表目录下的文件装着具体数据。数据库呈现给用户的是行列式结构——真实的文件数据并不是按行列式储存的但用户角度就是行列式的增删查改。这就是数据库的核心价值文件在磁盘上怎么躺是它的事你永远在操作一张规整的二维表。架构上也延续了熟悉的味道上三层都是用户层下面是操作系统层存储引擎的插件就类似一个类——new 出来用按需换InnoDB、MyISAM 各有脾气。而和这个服务打交道靠SQL 语句——按功能分类的专用语言。MySQL 章到此起步和 HTTP 章的衔接天衣无缝服务函数收参数 → 分割 → 接入数据库网页的动最终都动在数据库的表里。总结HTTP 快但不安全GET/POST 传参都不安全代理能帮你也能劫持你木马就是进程级劫持代理HTTPS HTTP SSL出网卡前必加密应用层进程内受操作系统进程隔离保护——加密在最后一道受保护的层落地会话保持两代方案Cookie凭证在客户端可被盗号→ Session ID账本在服务端idIP 环境双验证秘密越往服务端收越安全MySQL mysqld 守护进程 mysql 客户端的 C/S 网络服务root 先行账号再管数据库本质是文件DB目录、表文件只是操作权交给了专门写的服务用户看到的是行列式的抽象真实储存它自己安排上三层用户层、下两层操作系统层插件类。下一篇进入 SQL 语句那张规整的二维表怎么增删查改。
返回列表