导航:首页 > 编程语言 > java安全规范

java安全规范

发布时间:2022-08-27 08:50:48

‘壹’ java的安全机制有哪些

》类装载器结构
(class
loader)
》class文件检查器
(the
class
file
verifier)
》内置于Java虚拟机(及语言)的安全特性
》安全管理器及Java
API
(security
manager)
在Java沙箱中,类装载器体系结构是第一道防线。它在三个方面对Java的沙箱起作用:
1>它防止恶意代码区干涉善意的代码
2>它守护了被信任的代码的边界
3>它将代码归于某类(称为保护域),该类确定了代码可以进行哪种操作
Class文件检查器:
Class文件检查器保证装载的class文件内容有正确的内部结构,并且这些class文件互相间协调一致。Class文件检查器实现的安全目标之一就是程序的健壮性。如果某个有漏洞的编译器,或某个聪明的黑客,产生了一个class文件,而这个class文件中包含了一个方法,则合格方法的字节码中含有一条跳转到方法之外的指令,那么,一旦这个方法被调用,它将导致虚拟机的崩溃,所以,处于对健壮性的考虑,由虚拟机检验它装载的字节码的完整性非常重要。
Class文件检查器要进行四趟独立的扫描来完成它的操作。
第一趟:Class文件的结构检查
在这一趟扫描中,对每一段将被当做类型导入的字节序列,Class文件检查器都会确认它是否符合JavaClass文件的节本结构。在这一趟检查中检查器会进行很多检查例如:每个Class文件都必须以四个同样的字节开始:0xCAFEBABE。因为这个魔数Class文件分析器会很容易判断出某个文件具有明显问题而加以拒绝。检查器还必须确认在Class文件中声明的版本号和次版本号,这个版本号必须在这个虚拟机实现可以支持的范围之内。而且第一趟扫描还必须确认这个Class文件有没有被删减。总之第一趟扫描的目的就是保证这个字节序列正确的定义了一个新类型。
第二趟:类型数据的语义检查
第二趟扫描,检查器要查看每个组成部分,确认它们是否是其所属类型的实例,他们的结构是否正确。另外还要检查这个类本身是否符合特定的条件,它们是由Java编程语言规定的。例如,检查器强制规定除Object类以外的类必须有一个超类,或者检查final类有没有被子化等。
第三趟:字节码验证
这一趟是要确保采用任何路径在字节码流中都得到一个确定的操作码,确保操作数栈总是包含正确的数值以及正确的类型。
第四趟:符号引用的验证
在动态链接的过程中,如果包含在一个Class文件中的符号引用被解析时,Class文件检查器要进行第四趟检查。第四趟扫描仅仅是动态链接过程的一部分。当一个Class文件被装载时,它包含了对其他类的符号引用以及它们的字段和方法。一个符号引用是一个字符串,它给出了名字,并且可能还包含了其他关于这个被引用项的信息------这些信息必须足以唯一的识别一个类、方法、字段。这样对于其他类的符号引用必须给出这个类的全名;对于其他类的字段的符号引用必须给出类名、字段名以及字段描述符;对于其他类中的方法的引用必须给出类名、方法名以及方法的描述符。
所谓的动态链接是一个将符号引用解析为直接引用的过程。
此外,由于Java程序是动态链接的,所以Class文件检查器在进行第四次扫描中,必须检查相互引用类之间的兼容性。
除此之外,Java虚拟机还有一些内置的安全特性:
》类型安全的引用转换
》结构化的内存访问
》自动垃圾收集(不必显式地释放被分配的内存)
》空引用检查
通过保证一个Java程序只能使用类型安全的、结构化的方法去访问内存,Java虚拟机使得Java程序更为健壮。

‘贰’ 为什么java安全规范要写明不要信任环境变量的值,那怎么获取tomcat目录

//System.err.println(request.getSession().getServletContext().getRealPath("/"));

‘叁’ JAVA的安全性怎么理解为什么它是安全的

Java适用与网络/分布式环境,因此在安全方面投入了很大精力.使用Java可以构建防毒、防篡改的系统.
最初的Java就包括:
禁止运行时堆栈溢出.(例如蠕虫等病毒常用的袭击手段);
禁止在自己的处理空间之外破坏内存;
未经授权禁止读写文件.
并且,许多安全特性相继不断被加入java中.从1.1开始,java就有了数字签名类(digitally signed class)的概念.(我们浏览网页时会经常遇到的.)通过数字签名类,可以确定类的作者.如果信任这个类的作者,这个类在你机器上就能拥有更多权限.
但是即使这样,还是要说一句"安全不是绝对的".

‘肆’ Java 为什么比 PHP 更加安全稳定可维护

其实我个人觉得语言的选择,不能说决定代码的稳定性,或者说是可维护性的高低,因为这两个主要还是看代码的本身。

编码可以说所有的东西JAVA还有PHP主要都是看编码和代码的。

也可以这样说JAVA,大小写比较敏感。但是PHP对方法名啊,或者函数。这些基本上是不区分大小写的他都可以的。

其实我个人觉得,如果说是用JAVA的话可以更好的让你更加流利,或者说是更加快捷方便的去写一个更好的统一的一个编码,或者说一个代码这样话就会利于维护啊,或者阅读这样的话,你其实用JAVA的话会比较方便一些,毕竟PHP他之间相互的过程方程式啊,这些编程的问题可能没有JAVA方便。

但是你如果说哪个更加的安全稳定,并且可以维护的话,这个就看开发者的水平来保证的是没有办法说他们两个到底哪个更好,因为完全取决于代码,编程的问题就是掌握在使用的人的手里。

‘伍’ 为什么java的安全性比较高

java的安全性体现在两个方面:

1、语言层次的安全性主要体现在:

2、在运行环境提供了四级安全性保障机制:

字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

‘陆’ java 多线程中的线程安全问题(Java高手进)

线程安全跟单例模式没有必然联系。

单例仅保证了一个JVM下仅一个对象,但多个线程有可能同时操作该对象。
线程安全主要体现在,一个线程霸占某资源后,其它线程只有等待而不是抢夺,一旦造成互相抢夺即有可能出现数据读写混乱甚至死锁。
你的f1、f2、f3等没有公共数据,除非这些方法绝对地“自娱自乐”,比如:
public void f1() {
int a, b = 0;
int c = a + b;
}
也就是跟外界一点关系没有,此时不用加synchronized也是安全的。
但一个方法总要跟外界打交道,一旦涉及到外界数据,它就有不安全的隐患,即便是单例模式。

哦,还有,不同的数据是不可能被放在同一“内存片段”中的,都是相互“独立”的。线程体现在CPU时间片段的分配上,线程抢资源抢的也是CPU资源,数据还是那个数据。

methodA(Object o){...}
这个例子是不正确的,Object o仅为形参。虽然一段源代码在加载时要开辟一块内存空间,但运行时并不是在这块空间上。方法每次运行时都会开辟一个新的内存空间,该空间被当前CPU时间片压到栈顶进行读写,在其内创建形参Object o,方法结束后该空间出栈,如未结束即有另一线程运行该方法,则也是在另一个内存空间内重新开始这个过程,被另一个CPU时间片压到栈顶,且Object o始终是形参随方法而消亡,不会与实参混淆。并不是说单例模式就是总在同一内存空间上操作,单例仅保证加载的惟一性,加载是进堆内存的,而运行的先后是依赖栈(谁在栈顶谁进行读写)的。

‘柒’ JAVA的安全性究竟怎样体现出来

‘捌’ java哪些类是线程安全的

JAVA中线程安全的map有:Hashtable、synchronizedMap、ConcurrentHashMap。
java中map中线程安全怎么实现:
1、同步的map就是Hashtable, concurrenthashmap。
2、你看到的Hashtable就是直接在hashmap上加了个锁,concurrenthashmap就是分成多个分段锁。
java代码中线程安全级别:
1、绝对线程安全。
在任何环境下,调用者都不需要考虑额外的同步措施,都能够保证程序的正确性。这个定义要求很严格,java里面满足这个要求的类比较少,对于实现jsr133规范(java内存模型)的jdk(一般指jdk5.0之上),一般的不变类都是满足绝地线程安全的。比如 String,Integer类。一般情况下,定义了如果一个类里面所有字段都是final类型的,一般都认为这个类是不变的。不变类都是绝对线程安全的。
2、相对线程安全
在一般情况下,调用者都不需要考虑线程同步,大多数情况下,都能够正常运行。jdk里面大多数类都是相对安全的。最常见的例子是java里面Vector类。

‘玖’ 下面有关java代码安全性的叙述哪些是对的

下面有关Java代码安全性的叙述,( )是对的。 Ⅰ:字节码校验器加载查询执行需要的所有类。 Ⅱ:运行时解释器执行代码。 Ⅲ:在运行时,字节码被加载,验证后在解释器里面运行。 Ⅳ:类加载器通过分离本机文件系统的类和从网络导入的类增加安全性。
A.Ⅱ、Ⅲ
B.Ⅱ、Ⅲ、Ⅳ
C.Ⅰ、Ⅲ、Ⅳ
D.Ⅲ、Ⅳ

请帮忙给出正确答案和分析,谢谢!

正确答案:B
解析:该题考查考生对Java程序代码安全性的掌握。Java程序运行的过程是这样的:类加载器加载程序运行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性,这可以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行文件的内存划分就固定了,在这个时候,特定的内存地址被分配给对应的符号引用,查找表也被建立,由于内存划分发生在运行时,解释器在受限制的代码区增加保护,防止未授权的访问;然后字节码校验器进行校验,主要执行下面的检查,类是否符合JVM规范的类文件格式,有没有违反访问限制,代码有没有造成堆栈的上溢或者下溢,所有操作代码的参数类型是否都是正确的,有没有非法的数据类型转换(例如将整型数转换成对象类型)发生;校验通过的字节码被解释器执行,解释器在必要时通过运行时系统执行对底层硬件的相应调用。

‘拾’ java平台沙箱安全模型包含以下哪几个安全组件

1、字节码校验器(bytecode verifier):

确保Java类文件遵循Java语言规范。这样可以帮助Java程序实现内存保护。但并不是所有的类文件都会经过字节码校验,比如核心类。

2、存取控制器(access controller):

存取控制器可以控制核心API对操作系统的存取权限,而这个控制的策略设定,可以由用户指定。

3、安全管理器(security manager):

是核心API和操作系统之间的主要接口。实现权限控制,比存取控制器优先级高。

4、安全软件包(security package):java.security下的类和扩展包下的类,允许用户为自己的应用增加新的安全特性,包括:安全提供者、消息摘要、数字签名、加密、鉴别。

5、策略文件

策略文件是控制沙箱的管理要素,一个策略文件包含一个或多个保护域的项。策略文件完成了代码权限的指定任务,策略文件包括全局和用户专属两种。

阅读全文

与java安全规范相关的资料

热点内容
去哪里找按摩师很漂亮的app 浏览:818
86x99用简便算法计算 浏览:829
php截图flash 浏览:272
卸载联想app哪个好 浏览:719
php文字转图片 浏览:329
豆客后台怎么加密码 浏览:574
jpg转换pdf破解版 浏览:978
php基础书籍推荐 浏览:777
服务器与外网不通如何验证 浏览:351
电子版是不是就是文件夹 浏览:50
游戏属性文件加密 浏览:462
如何让安卓手机桌面图标下移 浏览:528
ubuntuphp5环境搭建 浏览:99
赌瘾解压视频 浏览:917
晋城移动dns服务器地址 浏览:294
php开源文库系统 浏览:135
android记事本源码 浏览:407
安卓11小游戏怎么玩法 浏览:190
gif有损压缩 浏览:937
windows下安装linux命令操作 浏览:844