文章目录
1. 0与1
2. 浮点数
3. 字符集与乱码
4. CPU与内存
5. TCP/IP
5.1 网络协议
- 如何无障碍地发送和接收数据?
使用相关协议来支撑, 按互相理解的方式进行数据的打包与解包, 使不同厂商的设备在不同类型的操作系统上实现顺畅的网络通信
- TCP/IP分层框架图
5.1.1 链路层
- 作用
以字节为单位将0和1进行分组, 传输数据
- 以太网链路层报文结构
像唐僧. 我是谁(贫僧), 从哪来(自中土大唐而来), 到哪去(去往西天), 干什么(拜佛求经), 验证(通关文牒)
5.1.2 网络层
作用
- 子网内: MAC寻址
- 子网外: 路由转发数据包
5.1.3 传输层
作用
定义逻辑端口, 确认应用程序身份后交接数据包
5.1.4 应用层
作用
以某种统一规定的协议格式解读数据
5.2 IP协议
IP是面向无连接, 无状态的, 没有额外的机制保证发送的包是否有序到达
- IP地址
- 属于网络层
- 主要功能: WLAN内进行路由寻址
- IP报文格式:
5.3 TCP建立连接
5.4 TCP断开连接
5.5 连接池
6. 信息安全
6.1 黑客与安全
- 黑客的攻击类型
- 非破坏性攻击: 扰乱系统的运行, 是指暂时失去正常对外提供服务的能力
- 破坏性攻击
2.1 系统数据受损
2.2 信息被窃取
- 攻击手段
- 病毒式
- 洪水式
- 系统漏洞式
- 安全体系, 遵循CIA原则
- 保密性(confidentiality): 对需要保护的数据进行保密操作, 无论是存储还是传输, 都要保证用户数据及相关资源的安全. 通常使用加密等手段保证数据的安全.
- 完整性(Integrity): 访问的数据需要是完整的, 而不是缺失的或者被篡改的, 不然用户访问的数据就是不正确的. 通常的做法是对数据进行签名和校验(比如数字签名和MD5).
- 可用性(Availability): 服务需要时可用的. 通常使用访问控制、限流等手段解决.
6.2 SQL注入
- 原理
SQL注入式攻击是未将代码与数据进行严格的格力, 导致在读取用户数据的时候, 错误地吧数据作为代码的一部分执行, 从而导致一些安全问题
- 预防
- 过滤用户输入参数中的特殊字符, 从而降低呗SQL注入的风险.
- 禁止通过字符串凭借的SQL语句, 严格使用参数绑定传入的SQL参数.
- 合理使用数据库访问框架提供的防注入机制.
6.3. XSS(Cross-Site-Scripting)
向正常用户请求的HTML页面中插入恶意脚本, 从而可以执行任意脚本. 主要用于信息窃取, 破坏等目的.
- XSS类型
- 反射型XSS
- 存储型XSS
- DOM型XSS
- 防范XSS
通过对用户输入数据做过滤或者转义
- 后端: 对用户输入字符串转义/过滤, 如Jsoup, HtmlUtils
- 前端: 安全的API展示数据, 比如使用innnerText而不是innerHTML
6.4 CSRF(Cross-Site Request Forgery)
在用户并不知情的情况下, 冒充用户发起请求, 在当前已经登录的Web应用程序上执行恶意操作.
- 防范CSRF
- CSRF Token验证, 利用浏览器的同源限制, 在HTTP接口执行前验证页面或者Cookie中设置的Token, 只有验证通过才能继续执行请求.
- 人机交互, 比如在调用上述网上银行转账接口时校验短信验证码
6.5 HTTPS
- 对称加密算法
- DES算法
- 不对称加密算法
- 原理: 非对称加密的安全性是基于大指数分解的困难性, 在非对称的加密中公钥和私钥是一对大质数函数. 计算两个大质数的乘积是简单的, 但是这个过程的逆运算(即将这个乘积分解为两个质数)是非常困难的.
- 算法:
2.1 RSA: RSA算法中, 从一个公钥和密文中解密出明文的难度等同于分解两个大质数的难度- 缺点: 加密和解密耗时长, 只适合对少量数据进行处理.
- 加密危机之后的信任危机由CA解决