一切借助外部系统实现的安全防护都是不可靠的,信息系统本身应具有良好的安全防护能力。对于常见的SQL注入、跨站脚本攻击、跨站请求伪造、越权访问等非法操作,信息系统应能够识别并进行防御。系统不得放弃自身的安全加固而采用反向代理、外挂WAF等外部手段实现上述目标。
攻击防护
Ø SQL注入
系统应全局性的检查每个用户提交的输入,对疑似的SQL注入攻击进行拦截并执行自定义的操作(告警、阻断、替换),系统应内置常见的SQL检测正则表达式并支持管理员自定义扩展规则库;
Ø 跨站脚本攻击
系统应全局性的检查每个用户提交的输入,对疑似的跨站脚本攻击进行拦截并执行自定义的操作(告警、阻断、替换),系统应内置常见的脚本检测正则表达式并支持管理员自定义扩展规则库;
Ø 跨站请求伪造
对所有的表单提交,系统应分配唯一的一次性令牌,阻止恶意用户通过会话重放的方式攻击系统;
限额配置
每个应用系统所在物理机的内存和CPU都是有限的,其所能服务的用户也是有限的,为了避免恶意用户通过非法手段频繁请求复杂业务而拖垮服务器,应用系统至少应支持对以下要素进行自定义配置:
Ø 最大在线会话数;
系统应支持对最大在线会话数进行配置,当在线会话达到上限值以后,拒绝所有的服务请求。
Ø 最大在线用户数;
系统应支持对最大在线用户数进行配置,当在线用户达到上限值以后,拒绝所有的登录请求。
Ø url的请求频率;
系统应支持全局性的定义所有URL的访问频率,如10/5s,即5秒内对同一个url的请求次数不得超过10次;第11次访问应自动触发逐级告警机制,即封禁ip5分钟;频率单位应支持秒、分、时3种;
Ø 单用户并发登录数;
系统应支持自定义配置单用户的最大并发登录数,如配置为1即禁止多人共享账号同时登录,配置为5即支持最多5人用同一个账号同时登录;
异常管理
系统应具有良好的异常管理机制,禁止在用户界面展示异常的详细堆栈信息,系统应对每一个发生的异常进行编号,并在异常发生后,自动报告异常的相关信息给安全管理员,至少包含以下信息:异常编号、发生时间、操作人IP、操作人账号、操作的URL地址、USER-AGENT、异常消息、消息堆栈、服务器IP、服务器端口、系统名称、请求的参数(可选)。
为了避免恶意用户通过频繁请求有异常的URL地址从而引起不可预知的服务器崩溃。对于出现异常的URL地址,系统应统计其出错次数,当达到自定义的上限值以后,自动禁止任何用户访问此业务。安全管理员可在异常修复后手工解除保护。
逐级告警
为了尽量减少误报的概率,系统应具有逐级告警机制,对于因异常操作而触发的自动告警,系统应进行逐级递增的警告机制,第1次封禁ip5分钟,第2次封禁ip10分钟,第3次封禁ip30分钟,第4次永久封禁ip地址,永久封禁的用户可向安全管理员提出解除申请。
响应时间
所有的告警信息,从规则匹配到告警发出不得超过60s。