Base64/摘要算法/Cookie/session/token
作者:
Loistein | 来源:发表于
2019-06-27 11:17 被阅读0次
Base64
- 用64个字符表示任意二进制数的方法
- 原理:1个包含64个字符的数组、处理二进制数(38 = 46)、查数组编码,长度增加33%
- 特殊处理:如二进制数不是3的倍数,\x00字节在末尾补足,再在末尾加1个或者2个=
- url safe base64: 把字符+和/分别变成-和_
- =去掉如何解码?自己想办法补齐为4的整数倍
- 适用于小段内容的编码,比如数字证书签名、Cookie的内容等
摘要算法?
- 通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被篡改过
- Md5: 常见、速度快、生成固定128 bit字节,通常用一个32bit的16进制字符串表示
- SHA1:160bit字节、通常用一个40bit的16进制字符串表示
- 加盐:加密时(将原文本+salt)一起加密,salt可以是固定的、或者不固定的(用户名)等
Cookie、session、token
- http:无状态协议
- cookie:存储在客户端(浏览器),可携带sessionId等信息
- session:存储在服务器端,根据客户端传过来的sessionId查找对应会话
- token: uid + time时间戳 + sign签名(token前几位加盐以摘要算法压缩成定长16进制)
防止表单重复提交、验证身份
-
token如何防止表单重复提交?
当客户端请求页面时,服务器会通过token标签生成一个随机数,并且将这个随机数放在session中,然后将该随机数发向客户端。如果客户端第一次提交,那么会将该随机数发往服务器端,服务器会将该随机数与服务器中保存的随机数进行比较,这时两者的值时相同的,服务器任务是第一次提交,并且更新服务器端的随机数。如果此时重复提交,则两端的随机数不一致,这时服务器就认为是重复提交,进而转向invalid token指向的页面。
本文标题:Base64/摘要算法/Cookie/session/token
本文链接:https://www.haomeiwen.com/subject/gdplcctx.html
网友评论