java代码安全性检查机制 |
---|
1.由类加载器将类文件,也就是编译后产生的.class文件,加载到虚拟机中,它通过区分本机文件系统的类和网络系统导入的类来增加安全性,这就可以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类都被加载完,执行文件的内存就固定了。
2.字节码校验器进行校验,字节码校验器不检查那些可信任的编译器所生成的类文件,而是对那些有意违背命名空间规定和java语言规则的类文件进行检查,并且关闭具有安全性漏洞的类文件,字节码校验器主要执行下面的检查。
3 加载的类符合JVM规范的类文件格式,没有违反访问限制,代码上没有造成上溢或者下溢,所有操作代码的参数类型都正确的,没有非法的数据类型转换发生,检查该类文件是否存在某些非法操作。字节码校验器在java源程序中,会执行try-catch-finally语句序列并且捕捉和响应java的程序错误。
4.最后,如果字节码校验检验通过,由java解释器负责把类文件解释成为机器码进行执行。
那么平时在编译时提升你代码的安全性和质量呢? | |
---|---|
安全方面:(1)少用反射,尽量用私有成员达到封装性。
(2)代码尽量不要出现异常,出现异常要及时处理。
(3)面向接口编程做到代码通用性。
(4)在数据库编译方面,防止数据意外丢失和不一致数据的产生,以及当数据库遭受破坏后迅速恢复正常。
数据库安全方面的问题隐患及怎么有效防止? |
---|
数据库安全: https://blog.csdn.net/u011589338/article/details/78986703
DBMS对数据库的安全保护方功能是通过四方面实现的,即安全性控制、完整性控制、并发性控制和数据库恢复。
原因:因为反射可以把类的常量随便改,破坏封装安全,以牺牲安全换取性能。反射无所不能,私有的也全部随便改和随便调用
性能方面:在达到封装目的后尽量少用对象和类,多用基本数据类型,避免重复调用同一方法或属性,尽量用基本数据类型代替,尤其是在大循环中更要注意。避免出现大量阻塞。
写代码 提高安全性,我就想到 避免oom。性能 尽量避免创建 多余的 对象,使用集合的时候给初始化大小之类的。还有很多平时应注意的代码规范问题等等,这里不一一列举!