精华内容
下载资源
问答
  • java安全性编程

    千次阅读 2014-10-12 09:41:08
    java安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些...

              java的安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些统统都交给了JVM,而且在内存分配的也做了一些检测,诸如越界检测ArrayIndexOutOf,还有空指针保存NullPointerException,这一切的不同使得java的使用也变得相对简单许多,在语言自身上避免了很多不安全的可能出现。但是尽管java在编程上是安全的,但是这并不意味着程序员们可以随意的写代码了。之前某组织的一份报告表明,在最近的近千个漏洞中,有64%的漏洞都是由于编写的程序引起的。程序员假设对自己的编程习惯不够重视的,必然会为此付出代价。本篇文章我想聊聊的是在安全方面,可能会出现的几个安全漏洞,在这里我说的更多的是针对的java平台的语言,但我相信同样适用于任何一种其他语言,安全性问题都是普通存在,相同的嘛。

            1.错位的信任。一个软件系统可以分为多个子系统,每个子系统有各自的访问模块,可以这么说每个子模块都有自己的受信域,但是他们自身是不能给自己赋予自己受信级别的,应该是由程序的部署者来确定,所以在这里我们说,划分好每个模块的受信域,并且保证保证每个子模块在自己的模块活动。一个好的安全设计模式其实应该是非信任解耦以及权限分离的结合。

            2.注入攻击,这个太常见了,平时说的最多的恐怕就是sql注入攻击了,当组件或系统在接受外部数据源的时候,有些数据可以是恶意的数据,如果此时不加以验证处理,就会导入注入攻击。这里我们倡导的做法是(1)验证,比如说各种数值的验证,是否在给定的要求范围内(2).净化,这指的是避免敏感数据的暴露,可以通过删除特殊字符,或进行转码的形式。(3).最后是标准化和归一化。将输入的形式转化为最简单的形式,这其实是一种有损装换的过程。经历了以上过程,不要以为就可以万事无忧了,当接受到复杂的指令字符串时,当在这些字符串中存在的一个特殊字符,比如"delete , insert"等会触发动作的关键词,也必须进行处理,否则,还是会出现安全漏洞。下面是一些对此状况的解决方案:

    (1).操作系统的命令解释器

    (2).具体SQL兼容接口的数据库

    (3).XML解释器

    (4).XPath评估器

    (5).基于轻量级的目录访问协议的目录服务,俗称LDAP

    (6).脚本引擎

    (7).正则表达式(regex)编译器

    有些我们听过。有些,确实我也没有听过。

           3.敏感数据泄露。敏感数据指的范围很广,我们常说的用户信息,当然就是敏感数据了,还有号码,银行账号,更别说更加机密的各种密钥了。所以在数据传输的过程中,我们一般减少对敏感数据的传输,但是真的需要此数据交互的时候,也要对这些数据进行过滤处理,在传送给非信任的组件。来张演示图:


    在java里是如何做出这样操作呢,在java中,我们是通过类,接口,成员实现访问控制的。类和类成员给予尽可能低的访问权限。接口也尽量开放之允许公开访问的方法。

             4.效能泄露。首先解释一下什么叫效能,效能指的是在授权中可以进行沟通而不会忘记的标识。每个java对象都有不会被遗忘的标识,所以我们自然可以联系到这些对象的引用其实就是就是这些对象的标示,也就是效能。对于那些会执行敏感操作的对象的引用来说,他们只允许他们的持有者执行这些操作的效能,就是对象引用,所以引用自身必须保证效能不能泄露给非受信代码。

             5.拒绝服务。俗称dos攻击。现在还有了ddos,分布式拒绝攻击了。拒绝攻击的原因很简单,就是有些恶意程序霸占着系统不放,导致正常的程序得不到资源,最终导致系统瘫痪。资源就无故耗尽。在<<java安全编码规范>>一书中提到了一些dos攻击的例子:

    (1).请求一个大的矢量图片,如SVG文件或字体文件

    (2)."ZIP"炸弹,那些经过zip,gzip压缩过的HTML文件,会因为解压而消耗巨大的资源

    (3).“XML解析炸弹”,解析XML文档的时候,如果结点很多,将会迅速号费很多的内存空间

    (4).过度使用磁盘空间

    (5).在一个散列表中插入了多个密钥,而这些密钥的使用相同的散列码,这样会导致最差的性能O(n*n),而不是平均性能O(n)

    (6).发起许多连接,服务器为每个连接分配大量的资源例如泛洪攻击。

           6.最低权限原则。这点在上面提到一些方法里都或多或少的已经有所体现。java灵活的安全模型赋予应用更多的权限,这可以通过自定义安全策略来完成。特权操作应该只提供给那些最少的需要特权的代码。java的AccessController机制允许只有需要的代码可以获得权限的提升,当一个类需要改变他的权限时,可以调用AccessController的doPriviliged()方法,获得临时的特权,但是还是尽可能的少出现doPriviliged()方法,从而避免出现安全漏洞。

           7.安全管理器。这里说的安全管理器,指的是java中的SecurityManager,在使用java API的时候,当出现执行违反安全策略的操作时,系统都会报出SecurityException的错误。我们在使用java编写程序的时候,使用的是系统默认的SecurityManager,当是当我们队安全的要求比较高的时候,我们鼓励更多的去实现一个自定义的安全管理器,在代码中经常想到会使用AcsessController,帮助我们去限制或获取一些特权的代码。

          以上就是我对于java安全性编程的一些看法,最终还是得看个人,说的再多,如果不去做的话,还是没用,还是希望能够有更多的程序员一起加入到安全性编程的队伍中去,提高自己的编码水平。

    展开全文
  • Java安全性编程实例/Java安全性编程实例/java/CH2/Caesar.javaJava安全性编程实例/Java安全性编程实例/java/CH2/Dec_RSA.classJava安全性编程实例/Java安全性编程实例/java/CH2/Dec_RSA.javaJava安全性编程实例/Java...

    Java安全性编程实例/Java安全性编程实例/java/CH2/Caesar.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/Dec_RSA.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/Dec_RSA.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/Apri.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/Apub.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/Bpub.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/KeyAgree.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/KeyAgree.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/Key_DH.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A/Key_DH.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/A

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/B/Apub.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/B/Bpri.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/B/Bpub.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/B/KeyAgree.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/B/Key_DH.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH/B

    Java安全性编程实例/Java安全性编程实例/java/CH2/DH

    Java安全性编程实例/Java安全性编程实例/java/CH2/Enc_RSA.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/Enc_RSA.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/Enc_RSA.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/key/key1.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/key/keykb1.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/key/Skey_RSA_priv.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/key/Skey_RSA_pub.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/key

    Java安全性编程实例/Java安全性编程实例/java/CH2/key1.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/keykb1.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/PBEDec.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/PBEDec.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/PBEEnc.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/PBEEnc.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/PBEEnc.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/SDec.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/SDec.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/SDecCBC.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/SDecCBC.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/SEnc.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/SEnc.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/SEnc.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/SEncCBC.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/SEncCBC.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/SEncCBC.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/show.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/show.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_DES.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_DES.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_kb.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_kb.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_RSA.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_RSA.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_RSA_priv.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/Skey_RSA_pub.dat

    Java安全性编程实例/Java安全性编程实例/java/CH2/StreamEnc.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/StreamIn.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/StreamIn.java

    Java安全性编程实例/Java安全性编程实例/java/CH2/StreamIn1.txt

    Java安全性编程实例/Java安全性编程实例/java/CH2/StreamOut.class

    Java安全性编程实例/Java安全性编程实例/java/CH2/StreamOut.java

    Java安全性编程实例/Java安全性编程实例/java/CH2

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/const/NewConst.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/const/TestConst.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/const/TestConst.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/const/TestConst.java.orig

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/const

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/Attacker.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/Attacker.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/MyDate.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/MyDate.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/MyDate2.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/Test1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/Test1.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2/UserCode.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/final2

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/MyDate1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/MyDate2.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/my1/MyDate1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/my1/Test1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/my1

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/my2/MyDate1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/my2

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/MyDate1.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t/MyDate1Old.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2/MyDate.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2/MyDate2.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2/MyTest.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2/MyTest.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2/Test1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2/Test1.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/t2

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/Test1.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del/Test1.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/del

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/final/Attacker.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/final/Attacker.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/final/MyDate.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/final/MyDate2.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/final/Normal.class

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/final/Normal.java

    Java安全性编程实例/Java安全性编程实例/java/Ch3/class/

    展开全文
  • java安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些...

    java的安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些统统都交给了JVM,而且在内存分配的也做了一些检测,诸如越界检测ArrayIndexOutOf,还有空指针保存NullPointerException,这一切的不同使得java的使用也变得相对简单许多,在语言自身上避免了很多不安全的可能出现。但是尽管java在编程上是安全的,但是这并不意味着程序员们可以随意的写代码了。之前某组织的一份报告表明,在最近的近千个漏洞中,有64%的漏洞都是由于编写的程序引起的。程序员假设对自己的编程习惯不够重视的,必然会为此付出代价。本篇文章我想聊聊的是在安全方面,可能会出现的几个安全漏洞,在这里我说的更多的是针对的java平台的语言,但我相信同样适用于任何一种其他语言,安全性问题都是普通存在,相同的嘛。

    1.错位的信任。一个软件系统可以分为多个子系统,每个子系统有各自的访问模块,可以这么说每个子模块都有自己的受信域,但是他们自身是不能给自己赋予自己受信级别的,应该是由程序的部署者来确定,所以在这里我们说,划分好每个模块的受信域,并且保证保证每个子模块在自己的模块活动。一个好的安全设计模式其实应该是非信任解耦以及权限分离的结合。

    2.注入攻击,这个太常见了,平时说的最多的恐怕就是sql注入攻击了,当组件或系统在接受外部数据源的时候,有些数据可以是恶意的数据,如果此时不加以验证处理,就会导入注入攻击。这里我们倡导的做法是(1)验证,比如说各种数值的验证,是否在给定的要求范围内(2).净化,这指的是避免敏感数据的暴露,可以通过删除特殊字符,或进行转码的形式。(3).最后是标准化和归一化。将输入的形式转化为最简单的形式,这其实是一种有损装换的过程。经历了以上过程,不要以为就可以万事无忧了,当接受到复杂的指令字符串时,当在这些字符串中存在的一个特殊字符,比如"delete , insert"等会触发动作的关键词,也必须进行处理,否则,还是会出现安全漏洞。下面是一些对此状况的解决方案:

    (1).操作系统的命令解释器

    (2).具体SQL兼容接口的数据库

    (3).XML解释器

    (4).XPath评估器

    (5).基于轻量级的目录访问协议的目录服务,俗称LDAP

    (6).脚本引擎

    (7).正则表达式(regex)编译器

    有些我们听过。有些,确实我也没有听过。

    3.敏感数据泄露。敏感数据指的范围很广,我们常说的用户信息,当然就是敏感数据了,还有号码,银行账号,更别说更加机密的各种密钥了。所以在数据传输的过程中,我们一般减少对敏感数据的传输,但是真的需要此数据交互的时候,也要对这些数据进行过滤处理,在传送给非信任的组件。来张演示图:

    0818b9ca8b590ca3270a3433284dd417.png

    在java里是如何做出这样操作呢,在java中,我们是通过类,接口,成员实现访问控制的。类和类成员给予尽可能低的访问权限。接口也尽量开放之允许公开访问的方法。

    4.效能泄露。首先解释一下什么叫效能,效能指的是在授权中可以进行沟通而不会忘记的标识。每个java对象都有不会被遗忘的标识,所以我们自然可以联系到这些对象的引用其实就是就是这些对象的标示,也就是效能。对于那些会执行敏感操作的对象的引用来说,他们只允许他们的持有者执行这些操作的效能,就是对象引用,所以引用自身必须保证效能不能泄露给非受信代码。

    5.拒绝服务。俗称dos攻击。现在还有了ddos,分布式拒绝攻击了。拒绝攻击的原因很简单,就是有些恶意程序霸占着系统不放,导致正常的程序得不到资源,最终导致系统瘫痪。资源就被无故耗尽。在<>一书中提到了一些dos攻击的例子:

    (1).请求一个大的矢量图片,如SVG文件或字体文件

    (2)."ZIP"炸弹,那些经过zip,gzip压缩过的HTML文件,会因为解压而消耗巨大的资源

    (3).“XML解析炸弹”,解析XML文档的时候,如果结点很多,将会迅速号费很多的内存空间

    (4).过度使用磁盘空间

    (5).在一个散列表中插入了多个密钥,而这些密钥的使用相同的散列码,这样会导致最差的性能O(n*n),而不是平均性能O(n)

    (6).发起许多连接,服务器为每个连接分配大量的资源例如泛洪攻击。

    6.最低权限原则。这点在上面提到一些方法里都或多或少的已经有所体现。java灵活的安全模型赋予应用更多的权限,这可以通过自定义安全策略来完成。特权操作应该只提供给那些最少的需要特权的代码。java的AccessController机制允许只有需要的代码可以获得权限的提升,当一个类需要改变他的权限时,可以调用AccessController的doPriviliged()方法,获得临时的特权,但是还是尽可能的少出现doPriviliged()方法,从而避免出现安全漏洞。

    7.安全管理器。这里说的安全管理器,指的是java中的SecurityManager,在使用java API的时候,当出现执行违反安全策略的操作时,系统都会报出SecurityException的错误。我们在使用java编写程序的时候,使用的是系统默认的SecurityManager,当是当我们队安全的要求比较高的时候,我们鼓励更多的去实现一个自定义的安全管理器,在代码中经常想到会使用AcsessController,帮助我们去限制或获取一些特权的代码。

    以上就是我对于java安全性编程的一些看法,最终还是得看个人,说的再多,如果不去做的话,还是没用,还是希望能够有更多的程序员一起加入到安全性编程的队伍中去,提高自己的编码水平。

    展开全文
  • java安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些...

    java的安全性编程其实也是略带了点防御性编程的意思在里面,其实java作为一门编程语言,相对C,c++,本身算比较安全的,跟C,C++这种偏底层的编程语言比,java少了显示的指针调用,少了程序上的内存释放,回收,这些统统都交给了JVM,而且在内存分配的也做了一些检测,诸如越界检测ArrayIndexOutOf,还有空指针保存NullPointerException,这一切的不同使得java的使用也变得相对简单许多,在语言自身上避免了很多不安全的可能出现。但是尽管java在编程上是安全的,但是这并不意味着程序员们可以随意的写代码了。之前某组织的一份报告表明,在最近的近千个漏洞中,有64%的漏洞都是由于编写的程序引起的。程序员假设对自己的编程习惯不够重视的,必然会为此付出代价。本篇文章我想聊聊的是在安全方面,可能会出现的几个安全漏洞,在这里我说的更多的是针对的java平台的语言,但我相信同样适用于任何一种其他语言,安全性问题都是普通存在,相同的嘛。

    1.错位的信任。一个软件系统可以分为多个子系统,每个子系统有各自的访问模块,可以这么说每个子模块都有自己的受信域,但是他们自身是不能给自己赋予自己受信级别的,应该是由程序的部署者来确定,所以在这里我们说,划分好每个模块的受信域,并且保证保证每个子模块在自己的模块活动。一个好的安全设计模式其实应该是非信任解耦以及权限分离的结合。

    2.注入攻击,这个太常见了,平时说的最多的恐怕就是sql注入攻击了,当组件或系统在接受外部数据源的时候,有些数据可以是恶意的数据,如果此时不加以验证处理,就会导入注入攻击。这里我们倡导的做法是(1)验证,比如说各种数值的验证,是否在给定的要求范围内(2).净化,这指的是避免敏感数据的暴露,可以通过删除特殊字符,或进行转码的形式。(3).最后是标准化和归一化。将输入的形式转化为最简单的形式,这其实是一种有损装换的过程。经历了以上过程,不要以为就可以万事无忧了,当接受到复杂的指令字符串时,当在这些字符串中存在的一个特殊字符,比如"delete

    , insert"等会触发动作的关键词,也必须进行处理,否则,还是会出现安全漏洞。下面是一些对此状况的解决方案:

    (1).操作系统的命令解释器

    (2).具体SQL兼容接口的数据库

    (3).XML解释器

    (4).XPath评估器

    (5).基于轻量级的目录访问协议的目录服务,俗称LDAP

    (6).脚本引擎

    (7).正则表达式(regex)编译器

    有些我们听过。有些,确实我也没有听过。

    3.敏感数据泄露。敏感数据指的范围很广,我们常说的用户信息,当然就是敏感数据了,还有号码,银行账号,更别说更加机密的各种密钥了。所以在数据传输的过程中,我们一般减少对敏感数据的传输,但是真的需要此数据交互的时候,也要对这些数据进行过滤处理,在传送给非信任的组件。来张演示图:

    899038892b1ce884dbcca8045bf23711.png

    在java里是如何做出这样操作呢,在java中,我们是通过类,接口,成员实现访问控制的。类和类成员给予尽可能低的访问权限。接口也尽量开放之允许公开访问的方法。

    4.效能泄露。首先解释一下什么叫效能,效能指的是在授权中可以进行沟通而不会忘记的标识。每个java对象都有不会被遗忘的标识,所以我们自然可以联系到这些对象的引用其实就是就是这些对象的标示,也就是效能。对于那些会执行敏感操作的对象的引用来说,他们只允许他们的持有者执行这些操作的效能,就是对象引用,所以引用自身必须保证效能不能泄露给非受信代码。

    5.拒绝服务。俗称dos攻击。现在还有了ddos,分布式拒绝攻击了。拒绝攻击的原因很简单,就是有些恶意程序霸占着系统不放,导致正常的程序得不到资源,最终导致系统瘫痪。资源就被无故耗尽。在<>一书中提到了一些dos攻击的例子:

    (1).请求一个大的矢量图片,如SVG文件或字体文件

    (2)."ZIP"炸弹,那些经过zip,gzip压缩过的HTML文件,会因为解压而消耗巨大的资源

    (3).“XML解析炸弹”,解析XML文档的时候,如果结点很多,将会迅速号费很多的内存空间

    (4).过度使用磁盘空间

    (5).在一个散列表中插入了多个密钥,而这些密钥的使用相同的散列码,这样会导致最差的性能O(n*n),而不是平均性能O(n)

    (6).发起许多连接,服务器为每个连接分配大量的资源例如泛洪攻击。

    6.最低权限原则。这点在上面提到一些方法里都或多或少的已经有所体现。java灵活的安全模型赋予应用更多的权限,这可以通过自定义安全策略来完成。特权操作应该只提供给那些最少的需要特权的代码。java的AccessController机制允许只有需要的代码可以获得权限的提升,当一个类需要改变他的权限时,可以调用AccessController的doPriviliged()方法,获得临时的特权,但是还是尽可能的少出现doPriviliged()方法,从而避免出现安全漏洞。

    7.安全管理器。这里说的安全管理器,指的是java中的SecurityManager,在使用java API的时候,当出现执行违反安全策略的操作时,系统都会报出SecurityException的错误。我们在使用java编写程序的时候,使用的是系统默认的SecurityManager,当是当我们队安全的要求比较高的时候,我们鼓励更多的去实现一个自定义的安全管理器,在代码中经常想到会使用AcsessController,帮助我们去限制或获取一些特权的代码。

    以上就是我对于java安全性编程的一些看法,最终还是得看个人,说的再多,如果不去做的话,还是没用,还是希望能够有更多的程序员一起加入到安全性编程的队伍中去,提高自己的编码水平。

    原文:http://blog.csdn.net/androidlushangderen/article/details/40014999

    展开全文
  • Java安全性编程实例

    2014-04-16 15:33:19
    Java安全性编程实例
  • Java 安全性编程指南 pdg格式电子书,主讲使用密码学技术和Java安全模块保护系统安全的问题,并将一些理论渗透到Java应用程序开发上,并通过实例讲述了通过数码进行数据加密和和实体认证的概念,书的内容面向Java...
  • 本书以大量精简的实例介绍了 Java 安全性编程方面的概念和技术,全书共计 9 章。 经过精心设计,每个小节的实例着重说明一个问题,又相互贯穿和联系。涉及 Java 加密和解密,反编译和反反编译,对类、成员变量、方法...
  • Java安全性编程指南.rar PDG格式文件
  • Java安全性编程指南.pdf

    热门讨论 2008-09-11 09:28:54
    Java安全性编程指南.pdf系统介绍java有关安全、加密算法以及详细的实现方法
  • 目录 第一章 安全性考虑 1、安全哲学,三个安全性目标 2、安全策略 3、安全需求: ...12、Java安全 13、字节验证器 14、类装入器 15、Java和密码学 第二章 安全的Java代码 1、可访问性 2、可访问性...
  • Java安全性编程实例 目 录 第1章运行环境设置 1 1.1 J2SE的安装和设置 1 1.1.1下载J2SE 1 1.1.2安装J2SE 1 1.1.3设置J2SE 3 2.1.4 J2SE的主要工具 4 1.2反编译器的安装 5 1.3 混淆器的安装 7 第2章数据内容的保护...
  • Java安全性编程实例 目 录 第1章运行环境设置 1 1.1 J2SE的安装和设置 1 1.1.1下载J2SE 1 1.1.2安装J2SE 1 1.1.3设置J2SE 3 2.1.4 J2SE的主要工具 4 1.2反编译器的安装 5 1.3 混淆器的安装 7 第2章数据...
  • java安全性编程指南》

    千次阅读 2011-11-24 20:06:01
     在Java程序中Sun公司提供了两个管理加密签名的工 具:keytool和jarsigner(JAR签名和验证工具)。jarsigner用于签名JAR文件,它用指定的...第三个工具policytool在Java2中用于管理安全策略。   Jarsigner
  • import java.io.FileInputStream; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec....
  • 求购《Java安全性编程指南》,该书信息如下: 【原 书 名】 Professional Java Security 【原出版社】 Wrox 【作 者】(美)Jess Garms Daniel Somerfield [同作者作品] [作译者介绍] 【译 者】 庞南[...
  • 总的看来,Java体系对安全以及安全编程考虑的很周到,这点我觉得非常难得。   凯撒密码-- 一种遥远简单的密码体系。简单的说来就是移位。 ECB -- 对明文分组的不同处理方式形成了不同的加密...
  • Java安全管理器  Java安全管理器处理必要的权限检查。缺省的实现是Java.lang.SecurityManager类中,如有必要可以派生出子类或取代之。对于不安全的行为,Java就会强制安全管理器进行安全检查。 安全管理器是如何...
  • Servlets    Servlets是服务器端动态产生...既然servlet用于网络应用,它的安全模块就是为了满足应用程序的需要,这些需要包括认证、访问控制、数据完整、保密。   认证    认证就是确认用户是谁。S...
  •  在Java程序中Sun公司提供了两个管理加密签名的工具:keytool和jarsigner(JAR签名和验证工具)。jarsigner用于签名JAR文件,...第三个工具policytool在Java2中用于管理安全策略。   Jarsigner  同JDK一起发...
  • java安全编程 与大多数Java开发人员交谈,他们会告诉您Java是目前最安全的编程语言。 但是,当然,他们会这么说。... 各种新的安全技术,黑客技术以及新颖的存储和加密形式,意味着许多人质疑Java安全性的旧确定性。...
  • java安全程序实际上是一个点稍微防御性编程意味着内,竟java作为编程语言,较C,c++,本身被认为是比较安全的,随着C,C++这样的偏底层的编程语言比,java少了显示的指针调用。少了程序上的内存释放。回收。这些统统都...
  • 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。
  • Steve McConnell的经典编程之书——《Code Complete》,用一个短篇解释了防御性编程的一些基本规则:1、保护你的代码远离来自“外部”的无效数据,无论这个“外部”的概念被定位为什么。它可以是来自于外部系统、...
  • java安全编程

    2015-09-17 15:37:00
    java安全程序实际上是一个点稍微防御性编程意味着内,竟java作为编程语言,较C,c++,本身被认为是比较安全的,随着C,C++这样的偏底层的编程语言比,java少了显示的指针调用。少了程序上的内存释放。回收。这些统统都...
  • 什么是线程的安全性文中原话的对于其正确性的描述:某个类的行为和其规范完全一致。在良好的规范中通常会定义各种不变性的条件来约束对象的状态,以及定义各种后验状态来描述对象操作的结果我对这句话也是一脸懵逼,...
  • 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问。对象的状态是指存储在状态变量(例如实例和静态域)中的数据。对象的状态可能包括其依赖对象的域。例如牟特HashMap的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,687
精华内容 2,274
关键字:

java安全性编程

java 订阅