明文保存password的程序在非常多方面easy造成password的泄漏.尽管用户输入的password一般时明文形式.可是应用程序必须保证password不是以明文形式存储的. 限制password泄漏危急的一个有效的方法是使用散列函数.它使得程序中能够间接的对用户输入的password和原来的password进行比較,而不须要保存明文或者对password进行解密后比較.这种方法使password泄漏的风险降到最低,同一时候没有引入其它缺点. [加密散列函数] 散列函数产生的值称为哈希值…
当构建CS模式的应用程序时,在client側存储敏感信息(比如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在client使用cookies存放server端获取的敏感信息.Cookies是由webserver创建的,它具有一个指定的有效时间,保存在client.当client连接上server端时,client使用cookies中存储的信息向server端进行认证,通过后server端返回敏感信息. 在XSS攻击下,Cookies不能保证敏感信息的安全.不…
当竞争对手的应用程序与我们的应用程序执行在同一个系统上时,我们的应用程序在内存中的敏感数据是非常easy被竞争对手获取的.假设我们的应用程序符合以下几种情况之中的一个,那么竞争对手能够获取到我们应用的敏感数据: 1)应用程序使用对象来存储敏感数据,并且在对象使用完后.对象的内容没有被清除或者对象没有被垃圾回收: 2)在操作系统执行内存管理任务或者执行休眠等功能时.应用程序的内存分页将被置换到磁盘上保存: 3)持有存储了操作系统缓存或者内存中敏感数据的buffer对象(比如BufferedRead…
java.lang.Object.equals()函数默认情况下是不能用来比較组合对象的,比如密钥值.非常多Key类没有覆写equals()函数,因此,组合对象的比較必须单独比較里面的各个类型以保证正确性. [不符合安全要求的代码演示样例] 以下的代码使用equals()函数比較两个key值,key值即使具有同样的取值也可能会返回不相等,导致结果出错. private static boolean keysEqual(Key key1, Key key2) { if (key1.equals(k…
安全性要求高的应用程序必须避免使用不安全的或者强度弱的加密算法,现代计算机的计算能力使得攻击者通过暴力破解能够攻破强度弱的算法.比如,数据加密标准算法DES是极度不安全的,使用类似EFF(Electronic Frontier Foundaton) Deep Crack的计算机在一天内能够暴力破解由DES加密的消息. [不符合安全要求的代码演示样例] 以下的代码使用强度弱的DES算法对字符串进行加密: SecretKey key = KeyGenerator.getInstance("DES&q…
首先还是打开熟悉的idea 在marketplace 输入 alibaba 我这是已经安装过了 下载完成之后重启idea生效 如果需要那就手动的扫描 当然已经自动的扫描了 如果你的代码不符合阿里的标准就会有 波浪线 当然你也可以手动的扫描…
Java编码优化 1.尽可能使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变 量,如静态变量.实例变量等,都在堆中创建,速度较慢.另外,栈中创建的变量,随 着方法的运行结束,这些内容就没了,不需要额外的垃圾回收. 2.尽量减少对变量的重复计算 明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,比如: for (int i = 0; i < list.size(); i++) {...} //应该替换成: int length = list.…
前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的.但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何产生的.存在哪些乱码的情况.该如何从根本上解决乱码问题.各位随博主一起征服令人厌烦的java乱码问题吧!!! java编码转换过程 我们总是用一个java类文件和用户进行最直接的交互(输入.输出),这些交互内容包含的文字可能会包含中文.无论这些java类是与数据库交互,还是与前端页面交互,他们的生命…
之前已经推荐过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…
1. Java命名约定 除了以下几个特例之外,命名时应始终采用完整的英文描述符.此外,一般应采用小写字母,但类名.接口名以及任何非初始单词的第一个字母要大写.1.1 一般概念 n 尽量使用完整的英文描述符n 采用适用于相关领域的术语n 采用大小写混合使名字可读n 尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一n 避免使用长的名字(小于 15 个字母是个好主意)n 避免使用类似的名字,或者仅仅是大小写不同的名字n 避免使用下划线(除静态常量等) 1.2 示范 包(Packa…