12
返回列表 发新帖
楼主: hwayw

《Java安全编码标准》有奖图书试读活动

[复制链接]
论坛徽章:
10000
绿钻
日期:2016-02-22 15:43:08绿钻
日期:2016-03-01 18:19:01绿钻
日期:2016-02-22 15:43:08绿钻
日期:2016-03-01 18:19:01绿钻
日期:2015-12-16 18:42:35绿钻
日期:2015-12-11 00:18:01绿钻
日期:2015-09-10 13:05:08绿钻
日期:2015-12-11 00:18:01绿钻
日期:2015-09-10 13:05:08绿钻
日期:2015-09-10 13:05:08
11#
发表于 2013-7-20 08:38 | 只看该作者
good

使用道具 举报

回复
论坛徽章:
63
2010广州亚运会纪念徽章:台球
日期:2010-10-18 12:43:48茶鸡蛋
日期:2013-01-09 10:59:002013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:帆船
日期:2013-04-02 17:07:052013年新春福章
日期:2013-04-08 17:42:48奥运纪念徽章
日期:2013-07-18 13:55:12优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11马上有钱
日期:2014-03-20 16:14:11
12#
发表于 2013-7-20 11:27 | 只看该作者
1、Java安全的机制有哪些?
Java的安全机制有很多,比如:
1)取消了指针,可以避免内存泄漏;(语言级别的安全机制)
2)对数组和字符串边界可以自动检查;(语言级别的安全机制)
3)异常处理机制;(语言级别的安全机制)
4)编译器内置了字节码验证器;
5)对文件、套接字、其他资源访问的安全机制;
6)JVM内置了安全管理器;
7)对象的安全机制;(签名对象、密封对象、监护对象)
8)JVM内部实现的系统域、保护域、沙箱域的安全机制;
等等。

2、如何编写安全的Java代码
编写安全的Java代码,有很多准则需要遵守:
1)静态字段:避免使用非final公共静态变量;谨慎使用易变的静态变量。
2)缩小作用域:尽可能缩小方法和字段的作用域。
3)公共方法/字段:避免使用公共变量,尽量使用类的公共方法访问这些变量;对于公共方法,如果他们能够访问或修改类的内部敏感状态,务必使其 包含安全机制。
4)保护包:防止包注入。
5)尽量让对象不可改变。
6)序列化:对象序列化到反序列化前这段时间,他不受Java运行时环境的控制,因此也不受Java安全机制的控制。
7)清除敏感信息:保存敏感信息时,尽量保存在数组这样的可变数据类型中,而不是保存在字符串这样的不可变对象中,这样敏感信息可以尽早显示地被清除。

3、试读图书章节后谈谈您的感想?
《Java安全编码标准》是一本很专业、很详细的书,试读图书提供了本书的前3章。我虽然从事Java开发有差不多十年之久,但是还从未系统地学习Java安全编码标准方面的内容,有很多内容在阅读后不由得会心一笑,因为书中的内容和我在实践中得出的结论是一致的。很想一睹全书!

使用道具 举报

回复
论坛徽章:
9
ITPUB十周年纪念徽章
日期:2011-11-01 16:20:28鲜花蛋
日期:2012-06-04 13:52:52迷宫蛋
日期:2013-07-23 10:52:342014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11喜羊羊
日期:2015-05-26 15:39:57美羊羊
日期:2015-06-11 09:54:21双子座
日期:2015-07-27 10:11:56秀才
日期:2016-01-13 12:14:26
13#
发表于 2013-7-23 15:06 | 只看该作者
本帖最后由 empireghost 于 2013-7-23 15:55 编辑

1、Java安全的机制有哪些?
          J a v a 语言的核心和扩展A P I 以及J V M 提供的安全特性包括安全管理器、访问控制器、加密、自动内存管理、强类型检查、字节码验证等。虽然这些安全特性为大部分的应用提供了足够的安全性保证,但是对这些特性的正确使用也是非常重要的。
          J a v a 是一种较为安全的语言。因为它没有显式指针操作;对数组和字符串边界有自动检查机制;如果尝试引用一个空指针会抛出系统异常;算术运算是明确定义的且与平台无关,类型转换也是如此。内置的字节码验证器可以确保这些检查会在正确的地方执行。此外,J a v a 还提供全面的、细粒度的安全机制,这个安全机制控制着对单个文件、套接字和其他敏感资源的访问。为从这种安全机制中获益,J V M (J a v a   Vi r t u a l   M a c h i n e ,   J a v a 虚拟机)特地设计了一个安全管理器。这个安全管理器是类j a v a . l a n g .   S e c u r i t y   M a n a g e r (或它的子类)的一个对象,我们可以基于它进行编程,但通过命令行参数来操作它是更为常见的使用方式。


2、如何编写安全的Java代码
      除了遵守java安全准则,也可以使用 Findbugs这样的字节码检查工具,Checkstyle这样的静态检查工具。

3、试读图书章节后谈谈您的感想?

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
14#
发表于 2013-7-25 16:50 | 只看该作者
1、Java安全的机制有哪些?
上面的朋友们谈得都不错,尤其是chszs。
我补充一点。
Java将执行程序分成本地和远程两种,本地程序默认为可信任的,而远程程序则被看作是不受信的。对于授信的本地程序,可以访问一切本地资源。而对于非授信的远程程序,在早期的Java实现中,安全依赖于沙箱机制。
沙箱机制就是将Java代码限定在虚拟机JVM特定的运行范围中,并且严格限制代码对本地系统的资源访问,通过这样的措施来保证对远程代码的有效隔离,防止对本地系统和资源造成破坏。
Java1.2版以后,改进了安全机制,增加了代码签名。不论本地代码或是远程代码,都会按照用户的安全策略设定,由类加载器加载到虚拟机中权限不同的运行空间,来实现差异化的代码执行权限控制。
Java 5和6的安全机制,再次做了改进,引入域Domain的概念。虚拟机会把所有代码加载到不同的系统域和应用域,系统域部分专门负责与关键资源进行交互,而各个应用域部分则通过系统域的部分代理来对各种需要的资源进行访问。虚拟机中不同的受保护域,对应不一样的访问权限。
上述内容是Java安全机制的基础。

2、如何编写安全的Java代码
《Java安全编码标准》这本书谈了很多编写安全的Java代码的规则。这里我就不重复了,我谈谈我在写Java线程安全的代码方面的一点经验。
“线程安全”指的是代码可以在并行或多线程环境下安全地使用,代码的行为符合预期地要求。任意代码,类或对象在并行环境下的行为是有所不同的,也即不是线程安全的。线程安全是Java编程中使用线程时引入的。
举例:
public class Counter {
    private int count;
    public int getCount(){
        return count++;
    }
}

例子是一个很简单的计数器Counter类,它包含一个getCount()方法,大家认为这个方法是线程安全的吗?
答案为否。因为++操作不是原子操作。在多线程下,代码可能会出现异常。
在Java中写线程安全的代码有多种方法:
一是使用Synchronized关键字。以上面的例子为例,Synchronized关键字可以锁定getCount()方法,使得同一时间内只有单个线程能执行此方法,避免了冲突。
二是使用原子整型,它使得++操作是原子的。因为原子操作是线程安全的,可以省去外部同步的开销。
提醒一句,锁机制只是实现线程安全的方法之一,不是唯一。

3、试读图书章节后谈谈您的感想?
这是一本好书,有一些知识点是我未注意到的,很想好好学习一下。

使用道具 举报

回复
论坛徽章:
17
生肖徽章2007版:牛
日期:2012-11-05 08:45:07ITPUB元老
日期:2016-06-20 16:53:52优秀写手
日期:2013-12-18 09:29:13ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:59ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42ITPUB社区12周年站庆徽章
日期:2013-08-20 11:30:112013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2013-01-10 11:04:16授权会员
日期:2013-01-02 13:15:07紫蛋头
日期:2012-12-13 13:31:27
15#
发表于 2013-8-2 13:35 | 只看该作者
话题讨论:
    1、Java安全的机制有哪些?
Java安全的机制可以分成四层:           

第一层确定 Java 电脑语言简单安全;           
第二层确认所载入要执行的程式正确;           
第三层确保Applet执行时的行为规矩;           
最後一层则确切保护客户端执行环境的安全。

使用道具 举报

回复
论坛徽章:
3
鲜花蛋
日期:2013-06-05 12:33:11ITPUB社区12周年站庆徽章
日期:2013-08-13 09:43:23林肯
日期:2013-09-12 15:57:33
16#
发表于 2013-8-8 09:32 | 只看该作者
本帖最后由 mcyeah 于 2013-8-8 09:34 编辑

1、Java安全的机制有哪些?
  在Java中,安全机制也是语言设计的核心功能之一,Java提供的主要安全机制有:
  Java本来就运行于虚拟机之中,这本身就具有一定的安全性,除此之外Java在语言规范、JVM、核心和扩展库中还提供以下安全机制:
  安全管理器
  访问控制器
  加密  自动内存管理
  强类型检查
  字节码验证
  多线程同步(sychronized)、 happens-before机制和原子类
  数组和字符串超界检查
  异常处理
  指针相关的功能相对c/c++做了一定的限制
  算术运算是明确定义的且与平台无关
  对单个文件、套接字和其他敏感资源的访问安全
  基于面向对象封装所带来的数据隐藏
  类装载器权限安全检查
  Java 论证和授权服务(JAAS)
  对象权限控制:JVM沙箱、保护域、系统域
  ......

2、如何编写安全的Java代码?
   即使Java规范在多方面都提供了安全的支持,但是代码还是要靠程序设计人员来写的,所以在平时编写程序的时候还要注意一下方面,以避免不必要的安全漏洞。
   最低权限原则
   净化穿越受信边界的非受信数据
   在验证之前标准化路径名
   限制传递给ZipInputStream的文件大小
   从格式字符串中排除用户输入
   在不同的字符编码中无损转换字符串数据
   防止类的循环初始化
   将所有增强for语句的循环变量声明为final类型
   使用可容纳无符号数据合法取值范围的整数类型
   不要使用浮点数进行精细计算
   运用代码检查工具对代码进行检查
   代码走查与审核

3、试读图书章节后谈谈您的感想?  

    读了试读章节,觉得整本书的讲解非常全面,提供了多个主题下的利用java安全机制来实现安全代码的原则和示例。作者的讲解多以实例来展示各个原则,表达清晰,易于理解,同时作者关于原则的阐释也能够让人产生联想举一反三,通过本书可以全面的学习到java安全编码方面的很多知识。新手可以通过它来详细学习一下java安全方面的知识,老鸟也可以通过本书继续深入了解各个安全机制的原理与不同的实现方式。这应该是一本希望写出安全代码的程序员手头必备的工具参考书,闲下来就翻翻,绝对收获大大滴!


使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表