应用安全,是把安全要求做进代码里。系统层面的防火墙、主机加固是"围墙",应用本身有漏洞,围墙修得再高也挡不住从门里进来的攻击。给开发团队一份上线前的【十道闸】,每道闸对应一类测评和真实攻击,过完再发版。
【闸1:输入校验】——所有用户输入按类型校验,防SQL注入、XSS这类老牌攻击;
【闸2:接口鉴权】——每个API确认调用方身份,【管理接口不能和普通接口共用无鉴权通道】;
【闸3:越权防护】——水平越权(改ID看别人数据)、垂直越权(普通用户调管理接口)逐个测试;
【闸4:支付与金额校验】——订单金额服务端二次计算,不信任前端传值,【这是电商类系统被薅的重灾区】——真实事件里,改一个价格参数就0.01元下单的漏洞,年年都在出现;
【闸5:验证码与限频】——登录、找回密码、短信接口加验证码和频率限制,防刷防撞库——短信接口不限频,一晚上能被刷掉几千元短信费;
【闸6:文件上传管控】——类型白名单、重命名、隔离存储、病毒扫描四件套,【上传目录禁执行权限】是关键一条;
【闸7:错误信息收敛】——报错不吐堆栈和SQL,【细节越少,攻击者越难猜】;
【闸8:日志埋点】——登录、支付、导出、删除全埋日志,为审计和溯源供数据;
【闸9:依赖组件检查】——第三方库版本过一遍已知漏洞库,【不少漏洞不在你的代码里,在你引用的组件里】;
【闸10:会话管理】——token有效期、退出即失效、单点登录互踢策略、会话超时自动登出。
这十道闸的价值:【测评的渗透验证爱测的,恰好就是这几类】——注入、越权、支付篡改、上传绕过,是渗透测试报告里的四大常客;平时把住闸,测评时的应用安全项就是顺路拿分,渗透环节也少出高危。
落地方式:把清单写进开发规范和上线检查表,【每次发版走一遍,十分钟的事】。再给两个推进技巧:一是把十道闸分配给具体的人负责验收,责任到人;二是上线前用自动化工具跑一遍基线扫描,加上人工抽查重点接口,双层保险。团队里如果招了新开发,十道闸就是zuihao的入职培训教材——【规范前置,比事后修漏洞便宜十倍】。
外包开发的团队特别注意:【合同验收时按这十道闸打勾】,别只验功能不验安全,交付回来的系统带着越权漏洞,整改的又是自己。
河南早办科技有限公司提供应用安全清单的定制和上线前测试服务,服务全国客户,开发团队想对清单逐条细化?欢迎来聊。应用安全十道闸,闸闸都是真实攻击。