成为大牛的关键--编程规范

在 4 月底实在是忙啊,在公司内部做了一个小工具,模拟 xml 请求的小工具(从一个文件中取出 soap 协议报问体后拼接从配置文件定义的数据拼接成这个 soap 报文,取出的 soap 协议存储在另一个文件内,并删除文件内的 soap 报文,其它就是要有相应的日志了),月底评审,就balabala 没时间写文章了,重点是还在 4.30 之前要完成编程规范的测试,请各位读者原谅。

编程规范我一直以为只分为一块,其实在我司里编程规范是分为两个部分的,一个是通用型编码规范,另一个是 编码安全规范。

  • 通用编码规范

看阿里 balabala 手册就行了

  • 编码安全规范(成为大牛的关键)

安全编码规则旨在软件编码层面提高开发人员的安全编码意识与能力,帮助产品达成机密性(确保数据不被非法访问与窃取)、完整性(确保数据是完整的、未被篡改)、可用性(要求保护资源在需要时可访问)。

数据校验

为什么要做数据校验勒,不做数据校验容易导致 SQL 注入攻击、OS 命令注入攻击、目录遍历攻击。

  • 信任域
    可以理解为,局部变量的使用,颗粒度可以划分到线程
  • 信任边界
    可以理解为,java 工程的边界,别的工程就属于边界之外的东西
  • 不可信数据
    文件、注册表、网络、环境变量、命令行、用户输入(包括命令行、界面)、用户态数据(对于内核程序)、进程间通信(包括管道、消息、共享内存、socket 等、RPC)、函数参数(对于 API)、全局变量(笨函数内,其它线程会修改全局变量)都属于不可信数据

介绍了三个概念,其实我们主要是对不可信数据进行数据的校验。
步骤:1. 获取到不可信输入的数据2. 对数据进行标准化和归一化 3.输入清理 4.验证 5.输出清理
举个栗子:
最近刚好工作中有遇到一个安全问题,IE 在 URL 地址栏中输入 < 这种特殊字符的时候,不会转码,在 chrome 输入 < 这种特殊字符的时候会帮你转成 %3D,有人说IE即将毁灭你为何还要考虑它,换个思路,攻击者用专业的攻击工具输入 < 效果是一样的。我们获取到此类不可信数据的时候,像 IE < 不给我们转码,那我们就应该帮他转码,或则直接获取到 < 就提示用户,你要乖乖的别乱来。以上步骤就已经完成了123步,验证阶段则是在你代码逻辑中要使用它的时候最好再验证一遍。

待续…

你可能感兴趣的:(Web开发)