加入收藏 收藏网站 设为首页 设为首页
招生考试网
学历类| 阳光高考 研 究 生 自学考试 成人高考 专 升 本 中考会考 外语类| 四 六 级 职称英语 商务英语 公共英语 日语能力
资格类| 公 务 员 报 关 员 银行从业 司法考试 导 游 证 教师资格 财会类| 会 计 证 经 济 师 会计职称 注册会计 税 务 师
工程类| 一级建造 二级建造 造 价 师 造 价 员 咨 询 师 监 理 师 医学类| 卫生资格 执业医师 执业药师 执业护士 国际护士
计算机| 等级考试 软件水平 应用能力 其它类| 书画等级 美国高考 驾 驶 员 书法等级 少儿英语 报 检 员 单 证 员 出国留学
 招生考试网 - 计算机等级考试 - 考试辅导 - 计算机二级 - 正文

 
如何查看您的JAVA代码是否安全
来源:fjzsksw.com 2010-7-19 编辑:zhanghaifeng 【字体:小 大】
在本文中,我们讨论了对付 13 种不同静态暴露的技巧。对于每种暴露,我们解释了不处理这些安全性问题所造成的影响。我们还为您推荐了一些准则,要开发不受这些静态安全性暴露威胁的、健壮且安全的 Java 应用程序,您应该遵循这些准则。一有合适的时机,我们就提供代码样本(既有暴露的代码也有无暴露的代码)。

 

虽然客户仍然很关心您为他们构建的应用程序的可伸缩性和可用性,但他们可能变得也很关心安全性,而且要求特别严格。应用程序可能容易受到两类安全性威胁的攻击:静态和动态。虽然开发人员不能完全控制动态威胁,但在开发应用程序时,您可以采取一些预防措施来消除静态威胁。本文概括并解释了 13 种类型的静态暴露 ― 它们是系统中的缺陷,它使系统暴露在想要篡夺该系统的特权的攻击者面前。您将学会如何处理这些暴露,以及如何发现(如果不处理这些暴露)这些暴露可能造成的影响。

  在开发 Java Web 应用程序时,您需要确保应用程序拥有完善的安全性特征补充。这里在谈到 Java 安全性时,我们并不谈及 Java 语言提供的安全性 API,也不涉及使用 Java 代码来保护应用程序。本文将着重讨论可能潜伏在您的 Java 应用程序中的 安全性暴露。安全性暴露是系统中的缺陷,它使系统无法 ― 即使系统被正常使用 ― 防止攻击者篡夺对系统的特权、控制系统的运行、危及系统上的数据安全或者假冒未经授权的信任。相对于安全性暴露,许多开发人员更加关心网站的感官效果。

  毫无疑问,客户现在既严格地关注性能、可伸缩性和可用性也严格地关注安全性。应用程序可能容易受到两类安全性威胁的攻击: 动态和静态。动态威胁是那些同未经授权进入系统有关的威胁,或那些同跨越网络传输的数据的完整性、隐私和机密性有关的威胁。这些威胁同应用程序的功能代码没有多大关系;使用加密、加密术和认证技术来消除这些威胁。相比之下,静态威胁却同应用程序的功能代码有关;它们同进入系统的授权用户所做的事情有关。未知用户闯入系统是动态威胁的一个示例;授权用户以未授权方式操作系统内的代码或数据是静态威胁的示例。应用程序开发人员并不能完全控制动态威胁;但开发人员在构建应用程序时却可以采取预防措施来消除静态威胁。

  在本文中,我们讨论了对付 13 种不同静态暴露的技巧。对于每种暴露,我们解释了不处理这些安全性问题所造成的影响。我们还为您推荐了一些准则,要开发不受这些静态安全性暴露威胁的、健壮且安全的 Java 应用程序,您应该遵循这些准则。一有合适的时机,我们就提供代码样本(既有暴露的代码也有无暴露的代码)。

  对付高严重性暴露的技巧

  请遵循下列建议以避免高严重性静态安全性暴露:

  ·限制对变量的访问

  ·让每个类和方法都成为 final,除非有足够的理由不这样做

  ·不要依赖包作用域

  ·使类不可克隆

  ·使类不可序列化

  ·使类不可逆序列化

  ·避免硬编码敏感数据

  ·查找恶意代码

  限制对变量的访问

  如果将变量声明为 public,那么外部代码就可以操作该变量。这可能会导致安全性暴露。

  影响

  如果实例变量为 public ,那么就可以在类实例上直接访问和操作该实例变量。将实例变量声明为 protected 并不一定能解决这一问题:虽然不可能直接在类实例基础上访问这样的变量,但仍然可以从派生类访问这个变量。

  清单 1 演示了带有 public 变量的代码,因为变量为 public 的,所以它暴露了。

  清单 1. 带有 public 变量的代码

  Java代码

  class Test {

  public int id;

  protected String name;

  Test(){

  id = 1;

  name = "hello world";

  }

  //code

  }

  public class MyClass extends Test{

  public void methodIllegalSet(String name){

  this.name = name;  // this should not be allowed

  }

  public static void main(String[] args){

  Test obj = new Test();

  obj.id = 123; // this should not be allowed

  MyClass mc = new MyClass();

  mc.methodIllegalSet("Illegal Set Value");

  }

  }

 



 
网站版权与免责声明
①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权等问题,请在两周内来电联系.
推荐文章
  • 此栏目下没有推荐文章
  • 热门文章

    报名考试
    全国 | 黑龙江 | 吉林 | 辽宁 | 内蒙古
    青海 | 宁夏 | 甘肃 | 新疆 | 陕西
    西藏 | 北京 | 天津 | 河北 | 山东
    江苏 | 安徽 | 河南 | 上海 | 浙江
    福建 | 广东 | 山西 | 湖南 | 湖北
    江西 | 广西 | 海南 | 云南 | 贵州
    四川 | 重庆
    分省高校计算机考试
    黑龙江 | 吉林 | 辽宁 | 内蒙古 | 河北
    北京 | 天津 | 新疆 | 甘肃 | 宁夏
    青海 | 陕西 | 山西 | 河南 | 山东
    江苏 | 安徽 | 浙江 | 福建 | 广东
    海南 | 广西 | 江西 | 湖北 | 湖南
    四川 | 上海 | 重庆 | 贵州 | 云南
    西藏
    成绩查询
    报考指南
    试题答案
    模拟试题
    考试辅导
    计算机一级 | 计算机二级 | 计算机三级 | 计算机四级
    经验交流
    高校计算机