## 一、概述
业务应用的安全问题,是一个核心的非功能性问题。当前,web应用面临的主要安全问题包括:黑客入侵、撞库拖库、网页篡改、后门木马、加密勒索、数据泄露等,一旦发生,会对业务的运营和用户造成无法挽回的损失,因此,在设计阶段就把系统安全,纳入考量,是非常必要和重要的;
## 二、常见的安全问题
常见的安全问题,一般包括以下这些类型;
1、数据曝露:通过技术手段,绕过接口验证机制,获取后端数据,找到SQL注入点,拉库;由于数据明文存储和传输,入侵后窃取用户信息或篡改数据,例如篡改网页;伪造移动app访问,获取敏感数据;
2、应用控制:弱口令、系统漏洞。通过系统漏洞入侵,并上传后门、木马等;
3、网络防控:没有防范DDoS进攻的能力,DDoS攻击,造成业务中断;
## 三、web应用解决方案
产品作为典型的web应用,如何针对具体的web应用安全问题,提供解决方案呢?以下将具体阐述FA+Esuite产品的技术解决方案;
1、SQL注入
问题描述:由于系统设计的时候,对敏感字符不加过滤不做转义处理,导致恶意用户可以通过系统的输入获取后端完整的数据库,破坏系统的安全;
解决方案:对输入数据进行验证/编码/过滤,不组装SQL语句而是使用预编译SQL语句;如果需要动态组装SQL语句,确保对特殊字符进行转义;禁止将任何高权限账号用于应用程序数据库访问,而是单独为应用创建有限权限的账号;
2、跨站脚本攻击
问题描述:恶意用户在系统页面输入控件注入恶意脚本,若系统对输入的数据不进行处理,直接结果输出到浏览器,浏览器将执行恶意脚本,破坏系统的安全;
解决方案:首先,一定要明确一个观点,一切外部来源数据,都要被我们服务端代码的过滤,才能让他展示到页面上。也就是说,一切外部数据,我们都认为它是非法的,一定要做好过滤;具体的可以通过编码转义和字符过滤的方式来避免该安全问题,对HTML标签关键字符进行编码转义,对事件、脚本等关键字符串进行过滤,避免注入有害脚本,造成攻击发生;
3、认证和会话管理漏洞
问题描述:Http利用会话管理机制来实现连接识别。用户登录通过身份认证后获取session,通常放在cookie中,之后根据session对用户身份进行识别,而不需要每次都要登陆,这种机制导致了信息泄露、用户会话被劫持,破坏系统的安全;
解决方案:对用户密码强度设置做要求,登录使用验证吗,对连续多次登录失败的账号进行锁定,另外,避免在URL中显示sessionID,确保退出、注销功能强制销毁session对象;
## 四、网络安全拓扑
1、如果采用自主机房的部署方案,那么,需要自行考虑硬件层面的网络安全方案。这个领域的技术已经很成熟,建议网络安全拓扑方案如下:
![](https://img.kancloud.cn/5f/62/5f623b29eb6c93b5b802d5733bd88194_554x238.png)
2、如果采用云机房,则无需考虑硬件层面网络安全,云机房自身已经有了完备的网络安全方案;
## 五、安全交付
在系统部署上线之前,应该进行安全测试,通过之后,方可交付上线;
推荐一些好用的测试工具:
FindBugs:做白盒测试;
Selenium:做黑盒测试;
- 前言
- 01、系统平台
- 系统管理
- 组织类型
- 单位管理
- 基本功能
- SAAS功能
- 组织管理
- 角色管理
- 人员管理
- 账号管理
- 账户体系
- 账号绑定
- 账号锁定
- 团队管理
- 模板管理
- 补丁管理
- 字段管理
- 静态字典
- 动态字典
- 系统配置
- 菜单配置
- 路由配置
- 编码规则
- 访问控制
- 系统参数
- 字典配置
- 参数定义
- 参数配置
- 属性定义
- 属性设置
- 树形定义
- 树形设置
- 系统监控
- 业务维护
- 工作监控
- 调度监控
- 导入监控
- 日志管理
- 在线监控
- 附件管理
- 附件监控
- 附件应用
- 附件授权
- 上传监控
- 字段监控
- 系统提醒
- 场景配置
- 事件监控
- 提醒记录
- 事件历史
- 日期设置
- 节假日期
- 工作时间
- 日历编制
- 工作日历
- 开放平台
- 微信应用
- 配置信息
- 更新菜单
- 钉钉应用
- 配置信息
- 开放服务
- 应用设置
- 服务管理
- 请求监控
- 请求跟踪
- 移动应用
- 发布管理
- 导航菜单
- 个人管理
- 个人资料
- 内部消息
- 短信中心
- 流程管理
- 流程定义
- 流程环节
- 处理人
- 流程提醒
- 流程签收
- 流程目录
- 流程微调
- 转移动作
- 定义校验
- 流程绑定
- 流程实体设定
- 单业务多流程
- 动态表单绑定
- 环节字段设定
- 转移路由设定
- 流程监控
- 流程催办
- 流程会话
- 流程启动
- 通用待办
- 流程驱动
- 通用已办
- 示范实例
- 流程启动
- 流程待办
- 流程已办
- 常见问题
- 表单管理
- 预留字段
- 字段定义
- 业务应用
- 动态辅表
- 辅表定义
- 辅表应用
- 辅表监控
- 动态主表
- 主表定义
- 业务定义
- 元数据
- 产生机制
- 应用场景
- 02、技术平台
- 重要组件
- 表单引擎
- 流程引擎
- 基础设施
- 系统安全
- 服务集成
- 核心组件
- 核心平台
- 调度容器
- 代码调试
- 相关配置
- 常见问题
- 多线程
- 工作容器
- 开放服务
- 富客户端
- 代理容器
- https
- SSLPinning
- 03、手机应用
- 参数配置
- 技术平台
- 功能设计
- 系统功能
- 应用升级
- 业务模块
- 04、微信应用
- 参数配置
- 多公众号
- 技术平台
- 业务功能
- 平台功能
- 微信客服
- 微信公号
- 05、开放服务
- 接入示例
- 实施方案
- nginx安装
- nginx配置
- nginx运行
- nginx限流
- 实现方案
- 业务操作
- 代码示意
- 06、常见问题
- 性能优化
- 启动优化
- 解决方案
- 实体操作冲突
- 算法说明
- 检验算法
- 注意事项
- 浏览器
- 插件
- 邮箱配置
- 系统维护
- 维护日志
- 维护脚本
- 开发环境
- 07、版权信息
- 平台版权
- 产品版权
- 后记