习惯一:前端数据不可信
所有输入在得到验证之前都是不可信的。
绝大部分的漏洞都来源于输入信任问题。
最显著的比如SQL注入、XSS攻击、缓冲区溢出等等。
习惯二:模拟针对您代码的威胁
通过威胁模型了解您产品可能面临的风险。
不仅需从一个攻击者的角度来看待风险,还需同时从所有攻击者角度来全盘考虑。
Ten landing points
输入验证 || 身份验证 || 授权 || 配置管理 || 日志记录 || 异常管理 ||参数操作 || 加密技术 || 会话管理 || 敏感数据
习惯三:认识攻守不对称
一早编写安全的代码,将降低事后修补成本。
开发人员需在限定时间内交付,而攻击者会用足够长的时间来找错误,然后向世界宣布,这就是“攻击者的优势和防御者的尴尬”。
因此,停止编写新的不安全代码,了解常见漏洞,并避免产生这些问题代码。
1)SQL注入?SQL语句拼接?
2)弱口令?密码未加密存储脱库?密码/cookie未https加密传输?
3)多因素认证机制创展绕过?
4)系统及应用版本存在远程代码执行?使用的库和组件存在已知漏洞?
5)人机验证不严格被穷举爆破?
6)未严格限制用户上传文件大小及类型?
7)密码硬编码?配置文件明文存储密码?
8)特殊字符未实体编码?输入和输出未检查?
习惯四:尽可能使用安全工具
工具会更高效的帮助我们找到问题。
通过工具可以快速扫描大量代码,还可以使您最真实的感知和某些代码有多”差“,并建议在上线前,模拟攻击对产品进行渗透测试。
习惯五:没有银弹
只有各种方法的综合运用,才是解决之道。
通过创建安全设计和编写安全代码者的努力,才能构建出安全的产品。
不要期望其他任何人或任何工具完全取代个人完成这项工作。
利用一切可利用的资源,如代码扫描工具,防御性语言技巧,安全专家等,并经常这样做。
习惯六:始终提前一步
安全环境总是在不断变化中。似乎每个星期都会出现安全问题的新变体。这就意味着您必须不断演变并了解新威胁和防御措施,否则您就要承受由此带来的后果。
保持领先的几个简单策略是经常阅读关于软件安全性的优秀书籍。同时从您过去的错误中吸取教训,当然能够从他人的错误中吸取教训则更好。
这些习惯希望对您有所帮助,期待您成为尊敬的,一流的安全开发人员。
领导说了
您点一个
小编的工资就涨五毛!
分享IT技术、汇集最新资讯
领取专属 10元无门槛券
私享最新 技术干货