== 这是 中国WEB信息博物馆Web InfoMall 2004年05月07日 存储的网页 ==
点击这里查看本网页的其他版本 隐藏InfoMall信息

竹笋炒肉: Java语言自身的安全性问题

March 29, 2004

Java语言自身的安全性问题

  • 存储/删除密码。如果密码是存储在 Java String 对象中的,则直到对它进行垃圾收集或进程终止之前,密码会一直驻留在内存中。即使进行了垃圾收集,它仍会存在于空闲内存堆中,直到重用该内存空间为止。密码 String 在内存中驻留得越久,遭到窃听的危险性就越大。 更糟的是,如果实际内存减少,则操作系统会将这个密码 String 换页调度到磁盘的交换空间,因此容易遭受磁盘块窃听攻击。 为了将这种泄密的可能性降至最低(但不是消除),您应该将密码存储在 char 数组中,并在使用后对其置零。(String 是不可变的,所以无法对其置零。)
  • 智能序列化。当为存储器或传输任何私有字段而序列化对象时,缺省情况下,这些对象都呈现在流中。因此,敏感数据很容易被窃听。可以使用 transient 关键字来标记属性,这样在流中将忽略该属性。

参考文献:
JAVA安全性第一部分 密码学基础

Posted by Hilton at March 29, 2004 08:51 AM | TrackBack
Comments
Post a comment









Remember personal info?