传统门户网站有哪些微信开发者工具官方文档
开发安全
文章目录
- 开发安全
 - 安全开发生命周期
 - 安全开发目标
 - 安全开发基本准则
 - 注入类攻击手段
 - Sql注入
 - 命令执行
 - 命令执行防御
 - 文件遍历
 - 防御
 
- 植入类安全漏洞防御
 - XSS(前端漏洞)
 - 防御
 
- 储存型XSS
 - 文件上传
 - 防御
 
- CSRF
 - 防御
 
- 会话固定
 - 防御
 
- 其它类型安全漏洞
 - 越权访问
 - 防御
 
- 口令爆破
 
- 安全编码规范
 - 输入验证和数据净化
 
- 业务安全漏洞
 - 逻辑漏洞
 - 逻辑混淆
 - 流程乱序
 - 数据重放
 
- 规避方案
 
- 第三方安全
 - 缓解方案
 
- 如何安全的开发
 - 安全培训
 - 安全设计
 - 安全编码
 - 代码审查
 - 安全测试
 - 定期更新和补丁
 - 访问控制
 - 加密
 - 事件监控和响应
 - 持续改进
 - 事件监控和响应
 - 持续改进
 
开发安全是指在软件开发过程中注重安全性,采取措施防止恶意攻击和数据泄露。这包括对代码进行安全审查,使用安全编程实践和工具,以及定期进行安全漏洞扫描和修复。开发安全是确保软件系统在设计和实现阶段考虑到安全性,并且在运行时能够有效地保护系统和数据免受攻击和威胁的过程。
安全开发生命周期
- 需求分析阶段
 - 设计阶段:考虑安全方面的设计
 - 开发阶段:遵守编码安全规范、自动化测试工具
 - 测试阶段:渗透测试
 - 部署维护阶段:定期更新修复安全漏洞
 
安全开发目标
- 保护隐私
 - 防止安全攻击漏洞
 - 确保系统可用
 - 遵守法律
 - 维护品牌荣誉
 - 节省成本资源
 
安全开发基本准则
- 安全优先
 - 防御性编程:编写健壮的程序,能处理不良输入和异常输出
 - …
 
注入类攻击手段
Sql注入
- 改变
sql语义 
SELECT * FROM users WHERE username = '输入的用户名' AND password = '输入的密码';
# 如果攻击者在用户名字段中输入 ' OR '1'='1 ,那么SQL查询就会变成:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '输入的密码';
 
SQL注入:预编译sql
命令执行
- 通过改变输入执行系统命令。调用
cmd、ping等 
命令执行防御
-  
参数化传值,避免拼接用户输入
 -  
验证、过滤
 -  
最小权限原则
 
文件遍历
- 遍历到文件目录扫面文件
 
防御
- 路径规范化、验证过滤、白名单机制、最小权限规则
 - 获取绝对路径
getAbsolutePath() 
植入类安全漏洞防御
XSS(前端漏洞)
Web页面插入恶意JS、钓鱼实现
防御
- 过滤验证(白名单)、设置
http头部 - 输出的内容进行编码
 - 使用安全的前端框架
 
储存型XSS
-  
储存型
Xss不会直接将恶意代码响应至前端浏览器进行渲染执行,先存储在数据库等介质中。 -  
为了防止储存型
XSS攻击,开发人员应该对用户输入进行适当的过滤和转义,以防止恶意脚本被存储和执行。最好的做法是采用内容安全策略(CSP)来限制页面加载的资源和脚本,以及对用户输入进行严格的验证和过滤。这样可以有效地防止储存型XSS攻击。 
文件上传
-  
WebShell脚本文件 -  
上传恶意文件,自动执行
 -  
直接拿下服务器
 
防御
-  
不能仅仅使用前端进行校验,需要在后端校验
 -  
文件名称校验
 -  
文件内容校验
 -  
路径隔离,限制文件的执行权限
 
CSRF
-  
敏感的操作需要考虑
CSRF攻击 -  
跨站请求伪造,受害者已经登陆的状态下
 -  
常见的盗号、钓鱼页面、钓鱼网站
 
防御
- 请求带上
token - 同源检测
 
会话固定
- 向用户传递一个一致的会话标识,引导用户使用该会话标识进行身份认证
 
防御
- 随机会话
id - 会话绑定
 - 安全的会话管理
 - 双重认证
 
其它类型安全漏洞
越权访问
- 数据权限问题
 
防御
- 校验输入
 - 权限最小化
 - 双重身份认证、强密码多因素
 - 关键操作日志,定期审计和监控
 
口令爆破
- 需要使用强密码
 - 密码策略
 - 登录失败限制
 - 多因素身份认证
 - 安全监控
 
安全编码规范
输入验证和数据净化
- 净化非受信数据(从外界来的数据),比如使用
sql预编译防止sql注入问题 - 避免目录遍历漏洞
 - 不要记录未净化过的数据,避免产生数据污染
 - 文件或者网络
IO两端使用兼容的编码 
业务安全漏洞
逻辑漏洞
逻辑混淆
- 不充分的逻辑设计
 - 复杂的业务逻辑
 - 修改和维护中的逻辑变更:注释、交接
 
流程乱序
- 业务流程执行的顺序与预期不符。产生原因有:并发操作
 
数据重放
- 缺乏合适的身份认证和授权机制
 - 不安全的通信协议
 
规避方案
- 充分的需求和设计,确保程序的逻辑结构清晰,合理,并充分考虑各种肯能的情况和分支
 - 逻辑注释和文档
 - 代码审查和测试
 
第三方安全
- 漏洞和脆弱性
 - 依赖管理
 - 恶意注入和后门
 
缓解方案
- 审查和评估
 - 定期更新
 - 依赖管理
 - 漏洞披露和响应
 - 安全编码实践
 
如何安全的开发
安全培训
- 确保开发团队接受适当的安全培训,了解常见的安全漏洞和攻击方式,以及如何编写安全代码。
 
安全设计
- 在软件设计阶段就考虑安全问题,例如通过威胁建模和安全架构评估来识别和减少安全风险。
 
安全编码
- 遵循安全编码最佳实践,例如输入验证、输出编码、访问控制、错误处理和加密等。
 
代码审查
- 在代码提交前进行代码审查,以识别和修复安全漏洞。可以使用静态代码分析工具来帮助识别漏洞。
 
安全测试
- 在开发过程中进行安全测试,包括渗透测试和安全评估,以识别和修复安全漏洞。
 
定期更新和补丁
- 定期更新和修补软件和系统,以修复已知的安全漏洞和错误。
 
访问控制
- 实施严格的访问控制策略,限制对敏感数据和系统的访问。
 
加密
- 使用加密技术保护敏感数据,例如使用 SSL/TLS 加密网络通信,使用加密算法保护存储的数据。
 
事件监控和响应
- 实施事件监控和响应计划,以识别和响应安全事件。
 
持续改进
- 定期评估和改进安全实践,以适应新的安全威胁和技术趋势。
 
总之,提高开发安全需要全面的安全实践,包括安全培训、安全设计、安全编码、代码审查、安全测试、定期更新和补丁、访问控制、加密、事件监控和响应、以及持续改进。
加密
- 使用加密技术保护敏感数据,例如使用 SSL/TLS 加密网络通信,使用加密算法保护存储的数据。
 
事件监控和响应
- 实施事件监控和响应计划,以识别和响应安全事件。
 
持续改进
- 定期评估和改进安全实践,以适应新的安全威胁和技术趋势。
 
总之,提高开发安全需要全面的安全实践,包括安全培训、安全设计、安全编码、代码审查、安全测试、定期更新和补丁、访问控制、加密、事件监控和响应、以及持续改进。
