java的安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些统统都交给了JVM,而且在内存分配的也做了一些检测,诸如越界检测ArrayIndexOutOf,还有空指针保存NullPointerException,这一切的不同使得java的使用也变得相对简单许多,在语言自身上避免了很多不安全的可能出现。但是尽管java在编程上是安全的,但是这并不意味着程序员们可以随意的写代码了。之前某组织的一份报告表明,在最近的近千个漏洞中,有64%的漏洞都是由于编写的程序引起的。程序员假设对自己的编程习惯不够重视的,必然会为此付出代价。本篇文章我想聊聊的是在安全方面,可能会出现的几个安全漏洞,在这里我说的更多的是针对的java平台的语言,但我相信同样适用于任何一种其他语言,安全性问题都是普通存在,相同的嘛。
1.错位的信任。一个软件系统可以分为多个子系统,每个子系统有各自的访问模块,可以这么说每个子模块都有自己的受信域,但是他们自身是不能给自己赋予自己受信级别的,应该是由程序的部署者来确定,所以在这里我们说,划分好每个模块的受信域,并且保证保证每个子模块在自己的模块活动。一个好的安全设计模式其实应该是非信任解耦以及权限分离的结合。
2.注入攻击,这个太常见了,平时说的最多的恐怕就是sql注入攻击了,当组件或系统在接受外部数据源的时候,有些数据可以是恶意的数据,如果此时不加以验证处理,就会导入注入攻击。这里我们倡导的做法是(1)验证,比如说各种数值的验证,是否在给定的要求范围内(2).净化,这指的是避免敏感数据的暴露,可以通过删除特殊字符,或进行转码的形式。(3).最后是标准化和归一化。将输入的形式转化为最简单的形式,这其实是一种有损装换的过程。经历了以上过程,不要以为就可以