安全性要求高的应用程序必须避免使用不安全的或者强度弱的加密算法,现代计算机的计算能力使得攻击者通过暴力破解能够攻破强度弱的算法.比如,数据加密标准算法DES是极度不安全的,使用类似EFF(Electronic Frontier Foundaton) Deep Crack的计算机在一天内能够暴力破解由DES加密的消息. [不符合安全要求的代码演示样例] 以下的代码使用强度弱的DES算法对字符串进行加密: SecretKey key = KeyGenerator.getInstance("DES&q…
明文保存password的程序在非常多方面easy造成password的泄漏.尽管用户输入的password一般时明文形式.可是应用程序必须保证password不是以明文形式存储的. 限制password泄漏危急的一个有效的方法是使用散列函数.它使得程序中能够间接的对用户输入的password和原来的password进行比較,而不须要保存明文或者对password进行解密后比較.这种方法使password泄漏的风险降到最低,同一时候没有引入其它缺点. [加密散列函数] 散列函数产生的值称为哈希值…
java.lang.Object.equals()函数默认情况下是不能用来比較组合对象的,比如密钥值.非常多Key类没有覆写equals()函数,因此,组合对象的比較必须单独比較里面的各个类型以保证正确性. [不符合安全要求的代码演示样例] 以下的代码使用equals()函数比較两个key值,key值即使具有同样的取值也可能会返回不相等,导致结果出错. private static boolean keysEqual(Key key1, Key key2) { if (key1.equals(k…
当竞争对手的应用程序与我们的应用程序执行在同一个系统上时,我们的应用程序在内存中的敏感数据是非常easy被竞争对手获取的.假设我们的应用程序符合以下几种情况之中的一个,那么竞争对手能够获取到我们应用的敏感数据: 1)应用程序使用对象来存储敏感数据,并且在对象使用完后.对象的内容没有被清除或者对象没有被垃圾回收: 2)在操作系统执行内存管理任务或者执行休眠等功能时.应用程序的内存分页将被置换到磁盘上保存: 3)持有存储了操作系统缓存或者内存中敏感数据的buffer对象(比如BufferedRead…
当构建CS模式的应用程序时,在client側存储敏感信息(比如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在client使用cookies存放server端获取的敏感信息.Cookies是由webserver创建的,它具有一个指定的有效时间,保存在client.当client连接上server端时,client使用cookies中存储的信息向server端进行认证,通过后server端返回敏感信息. 在XSS攻击下,Cookies不能保证敏感信息的安全.不…
首先还是打开熟悉的idea 在marketplace 输入 alibaba 我这是已经安装过了 下载完成之后重启idea生效 如果需要那就手动的扫描 当然已经自动的扫描了 如果你的代码不符合阿里的标准就会有 波浪线 当然你也可以手动的扫描…
之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的英文很简单,但是最近发现有人翻译了这篇文章,所以专门写一篇文章推荐一下: http://hawstein.com/posts/google-java-style.html 同时为了避免原始文章丢失,所以转了一下: 作者:Hawstein出处:http://hawstein.com/posts/goo…
这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表.和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不常见的情况,可能有很大影响. 我在编写和维护jOOQ(Java中内部DSL建模的SQL)时遇到过这些.作为一个内部DSL,jOOQ最大限度的挑战了Java的编译器和泛型,把泛型,可变参数和重载结合在一起,Josh Bloch可能不会推荐的这种太宽泛的API. 让我与你分享10个微妙的Java编码最佳…
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言.由于人类的语言有太多,因而表示这些语言的符号太多,无法用计算机中一个基本的存储单元-- byte 来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解.我们可以把计算…
编码规范体现出一个开发者的基本素质,良好的编码规范可以提高团队编码的效率,避免很多不必要的问题.今天分享一个标准的Java编码规范给大家,希望对于大家今后的开发工作带来帮助. 编码规范的意义         在项目开发维护中,编码规范作为开发规范的一个组成部分,是十分重要和必须的,它不仅仅是为了提高开发效率,也有利于降低后期维护开发的成本.编码规范的根本目的就是要让不仅代码可以一目了然,也可以很容易的理解开发人员所编写的代码程的用途和意义.由此,用来减少项目中因为开发维护人员的更替或由于长时间不…