科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道编写安全的Java代码1

编写安全的Java代码1

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 本文是来自Sun官方站点的一篇关于如何编写安全的Java代码的指南,开发者在编写一般代码时,可以参照本文的指南

来源:IT专家网 2008年5月7日

关键字: 代码 安全 编写 java

  • 评论
  • 分享微博
  • 分享邮件
本文是来自Sun官方站点的一篇关于如何编写安全的Java代码的指南,开发者在编写一般代码时,可以参照本文的指南:
  •   静态字段
  •   缩小作用域
  •   公共方法和字段
  •   保护包
  •   equals方法
  •   如果可能使对象不可改变
  •   不要返回指向包含敏感数据的内部数组的引用
  •   不要直接存储用户提供的数组
  •   序列化
  •   原生函数
  •   清除敏感信息

  静态字段

  • 避免使用非final的公共静态变量

  应尽可能地避免使用非final公共静态变量,因为无法判断代码有无权限改变这些变量值。

  • 一般地,应谨慎使用易变的静态状态,因为这可能导致设想中相互独立的子系统之间发生不可预知的交互。

  缩小作用域

  作为一个惯例,尽可能缩小方法和字段的作用域。检查包访问权限的成员能否改成私有的,保护类型的成员可否改成包访问权限的或者私有的,等等。

  公共方法/字段

  避免使用公共变量,而是使用访问器方法访问这些变量。用这种方式,如果需要,可能增加集中安全控制。

  对于任何公共方法,如果它们能够访问或修改任何敏感内部状态,务必使它们包含安全控制。

  参考如下代码段,该代码段中不可信任代码可能设置TimeZone的值:

private static TimeZone  defaultZone = null;

      public static synchronized void setDefault(TimeZone zone)
      {
          defaultZone = zone;
      }

保护包

  有时需要在全局防止包被不可信任代码访问,本节描述了一些防护技术:

  • 防止包注入:如果不可信任代码想要访问类的包保护成员,可以尝试在被攻击的包内定义自己的新类用以获取这些成员的访问权。防止这类攻击的方式有两种:

  1. 通过向java.security.properties文件中加入如下文字防止包内被注入恶意类。

  ... 
package.definition=Package#1 [,Package#2,...,Package#n]
...

  这会导致当试图在包内定义新类时类装载器的defineClass方法会抛出异常,除非赋予代码一下权限:

  ... 
RuntimePermission("defineClassInPackage."+package)
...

  2. 另一种方式是通过将包内的类加入到封装的Jar文件里。

  (参看http://java.sun.com/j2se/sdk/1.2/docs/guide/extensions/spec.html)

  通过使用这种技巧,代码无法获得扩展包的权限,因此也无须修改java.security.properties文件。

  • 防止包访问:通过限制包访问并仅赋予特定代码访问权限防止不可信任代码对包成员的访问。通过向java.security.properties文件中加入如下文字可以达到这一目的:

  ... 
package.access=Package#1 [,Package#2,...,Package#n]
...

  这会导致当试图在包内定义新类时类装载器的defineClass方法会抛出异常,除非赋予代码一下权限:

  ... 
RuntimePermission("defineClassInPackage."+package)
...

  如果可能使对象不可改变

  如果可能,使对象不可改变。如果不可能,使得它们可以被克隆并返回一个副本。如果返回的对象是数组、向量或哈希表等,牢记这些对象不能被改变,调用者修改这些对象的内容可能导致安全漏洞。此外,因为不用上锁,不可改变性能够提高并发性。参考Clear sensitive information了解该惯例的例外情况。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章