开发涉及的安全规范整理

前言

  这篇文章我们来整理下写代码和方案设计中的安全规范问题,内容偏服务端,即使是入门的新人,如果你对安全有所了解会让成熟规范的团队对你高看一眼。安全经常是在风平浪静时被大家所忽视,出事了再弥补,实际上安全工作首先要做的是防患于未然而不是亡羊补牢,成熟的公司和团队会给开发制定严格的安全编码规范,大家自己团队里最重视的安全措施有哪些?可以评论分享下,本文尽可能给大家罗列一些基本的安全措施。

安全场景与措施

API调用方式

  不能使用公网IP加端口的http方式请求,要用https协议加上API域名的方式去访问后端的API,https协议作为传输通道更安全,实际生产中大家都是这样做的。

鉴权

  不管是提供给客户端的外部接口还是服务间调用的内部接口,都不能免鉴权给用户访问,除非用户注册这种特殊功能接口或者你们的应用是不带账号登录的,否则,用户登录后能执行的操作涉及到访问后端API时,后端必须接收登录token并解析鉴权,token的生成方式常用的是JWT。

参数校验

  参数校验是一个很基本的安全规范措施,因为参数传入的攻击类型很多,比如SQL注入、JS脚本注入、日志注入(后文特别提到)等,要针对性的拦截掉可能的攻击参数,提示参数无效。

日志打印

  要注意,敏感信息不能在服务器日志中打印,服务器日志被认为是可窃取的,对于用户联系账号、密码、身份证号等敏感信息在日志中不能打印,或者只能脱敏打印(就像快递联系方式中间都是*****一样)。另外就是参数校验的时候要考虑日志注入的校验,因为别人有可能传参的时候传了一个服务器命令过来,如果这时候日志打印了的话,很可能造成外部命令的执行。

数据保存加密

  对于敏感的用户信息数据,存数据库的时候要加密保存,比如账号和密码,账号一般采用可逆的加密算法,密码一般采用不可逆的(不需要能解密),比较密码是否正确只需要比较加密值是否一样即可。特别要提一点,就算是redis这种缓存数据库,用户信息也不能明文地作为key-value去保存。

总结

  安全规范的要求其实远不止本文所说的这些,即使是上面这些安全措施,比如涉及到某些加密方式涉及到加密迭代次数设置的,都会要求要1000次或者100000次以上这种细节的要求。安全无小事,希望各位开发们注意安全。

1. 背景 4 2. 编码安全 4 2.1. 输入验证 4 2.1.1. 概述 5 2.1.2. 白名单 5 2.1.3. 黑名单 5 2.1.4. 规范化 5 2.1.5. 净化 5 2.1.6. 合法性校验 6 2.1.7. 防范SQL注入 6 2.1.8. 文件校验 6 2.1.9. 访问控制 6 2.2. 输出验证 6 2.2.1. 概述 6 2.2.2. 编码场景 6 2.2.3. 净化场景 7 2.3. SQL注入 7 2.3.1. 概述 7 2.3.2. 参数化处理 7 2.3.3. 最小化授权 7 2.3.4. 敏感数据加密 7 2.3.5. 禁止错误回显 8 2.4. XSS跨站 8 2.4.1. 输入校验 8 2.4.2. 输出编码 8 2.5. XML注入 8 2.5.1. 输入校验 8 2.5.2. 输出编码 8 2.6. CSRF跨站请求伪造 8 2.6.1. Token使用 9 2.6.2. 二次验证 9 2.6.3. Referer验证 9 3. 逻辑安全 9 3.1. 身份验证 9 3.1.1. 概述 9 3.1.2. 提交凭证 9 3.1.3. 错误提示 9 3.1.4. 异常处理 10 3.1.5. 二次验证 10 3.1.6. 多因子验证 10 3.2. 短信验证 10 3.2.1. 验证码生成 10 3.2.2. 验证码限制 10 3.2.3. 安全提示 11 3.2.4. 凭证校验 11 3.3. 图灵测试 11 3.3.1. 验证码生成 11 3.3.2. 验证码使用 11 3.3.3. 验证码校验 11 3.4. 密码管理 12 3.4.1. 密码设置 12 3.4.2. 密码存储 12 3.4.3. 密码修改 12 3.4.4. 密码找回 12 3.4.5. 密码使用 12 3.5. 会话安全 13 3.5.1. 防止会话劫持 13 3.5.2. 会话标识符安全 13 3.5.3. Cookie安全设置 13 3.5.4. 防止CSRF攻击 13 3.5.5. 会话有效期 14 3.5.6. 会话注销 14 3.6. 访问控制 14 3.6.1. 跨权访问 14 3.6.2. 控制方法 14 3.6.3. 控制管理 14 3.6.4. 接口管理 15 3.6.5. 权限变更 15 3.7. 文件上传安全 15 3.7.1. 身份校验 15 3.7.2. 合法性校验 15 3.7.3. 存储环境设置 15 3.7.4. 隐藏文件路径 16 3.7.5. 文件访问设置 16 3.8. 接口安全 16 3.8.1. 网络限制 16 3.8.2. 身份认证 16 3.8.3. 完整性校验 16 3.8.4. 合法性校验 16 3.8.5. 可用性要求 17 3.8.6. 异常处理 17 4. 数据安全 17 4.1. 敏感信息 17 4.1.1. 敏感信息传输 17 4.1.2. 客户端保存 17 4.1.3. 服务端保存 17 4.1.4. 敏感信息维护 18 4.1.5. 敏感信息展示 18 4.2. 日志规范 18 4.2.1. 记录原则 18 4.2.2. 事件类型 18 4.2.3. 事件要求 18 4.2.4. 日志保护 19 4.3. 异常处理 19 4.3.1. 容错机制 19 4.3.2. 自定义错误信息 19 4.3.3. 隐藏用户信息 19 4.3.4. 隐藏系统信息 19 4.3.5. 异常状态恢复 20 4.3.6. 通信安全 20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知了蝉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值