文档章节

Java安全编程

pior
 pior
发布于 2017/02/24 21:14
字数 932
阅读 34
收藏 0

1.限制敏感数据的生命周期

对存储敏感信息的数据用后没有清除

---解决方案: 对敏感信息使用过后, 要主动进行清除. 尽量不用String这样的不可变数据存储.

敏感信息被交换到磁盘存储

---解决方案: 选用安全操作系统

通过日志, 调试信息等暴露敏感信息

----解决方案: 对相关信息进行检查

通过缓存(bufferedReader)读取敏感数据后, 没有清除缓存

----解决方案: 改用Channel, 并主动调用clear()方法清空缓存

2.不要在客户端存储未经加密的敏感数据

----解决方案: 在客户端存储的数据进加密, 并用有效时间控制风险

3.为敏感可变类提供不可修改的包装器

内部可变的敏感数据在对外返回时, 可能受到恶意修改

----解决方案: 通过创建子类, 并重写敏感数据方法, 将数据复制后返回,

4.确保安全敏感方法被调用时参数经过验证

5.防止任意文件上传

----解决方案: 通过Apache Tika 对文件元数据进行解析和验证

6. 正确的编码或转义输出

----解决方案: 对于危险的字符, 如HTML里的<>, 即使输入相关可信, 也要再对输出信息进行检查和转义

7.防止代码注入

----解决方案: 在使用Javascript这样的脚本引擎时, 要对输出的代码进行白名单无害化处理.

8.不要依赖可以被不可信代码覆盖的方法

----解决方案: 当调用一个不可信对象的clone()方法进行主动防御式编程时, 可能启用了恶意代码, 对此应使用手动复制的方法;  如果对于一个复合对象, 不能确定其equals方法重写是否可信, 可以用逐个属性比对的方式处理. 对于自定义的敏感类, 可用final修饰, 保证其不会被恶意重写.

9.不要使用不安全的弱加密算法

----解决方案: 如MD5, DES, 3DES, SHA-1等不安全的加密算法, 不要在生产环境中使用

10.使用散列算法存储密码等单向敏感信息

----解决方案: 将密码等信息用SHA-256 等算法散列后进行存储, 既能提高很高的安全性, 又保持密码的单向验证功能.

11.确保SecureRandom正确地选择随机种子

----解决方案: SecureRandom类的默认构造方法是选择了一个内部很强随机性的种子, 如果你不能保证自己提供的随机种子的随机性, 请用默认构造方法.

12.不要授予过多的特权

----解决方案: 在用AccessController的doPrivileged()方法进行授权时, 应传递第二个参数进行权限的限制.

13.最小化特权代码

----解决方案: 确保特权代码段只包含需求增加特权的操作.

14.不要将使用降低安全性检查的方案暴露给不可信代码

JVM支持类加载器通过动态加载额外的类来在运行时扩展, 类加载器架构通过使用不同的类加载器来控制来自不同来源的代码之间的交互. 如果攻击类的类加载器可以将不可信类的加载委托给可信类的类加载器, 将发生特权升级.

----解决方案: 不要对外开放据有类加载能力的可信代码. 防止被攻击利用.

 

© 著作权归作者所有

共有 人打赏支持
pior
粉丝 26
博文 151
码字总数 22496
作品 0
济南
高级程序员
私信 提问
一句话讲清楚什么是JavaEE

Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多的Jav...

qq58edeba279279
06/26
0
0
什么是Java语言?java语言简介

Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的W...

阿秀a
2010/10/19
0
0
Java就业变难了?你需要对自己有点信心

伴随着IT的火热,越来越多的人进入了IT领域,这在进一步推动着IT发展的同时也极大增加了就业压力。伴随着激烈的岗位竞争,越来越多的人开始感叹工作难找,越火的行业越是如此,Java自是首当其...

糖宝_d864
06/08
0
0
一句话讲清楚什么是JavaEE

摘要: Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多...

qq592fbb5b34ad7
07/02
0
0
几周内搞定Java的10个方法

不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”)。简单来说,就是Java程序可以直接在任何设备上运行。 Java语言是什么? 不管我们是否意识到...

拉偶有所依
2015/03/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

纹理与表面细节添加方法---凹凸映射

中国龙-扬科
15分钟前
0
0
20181115上课截图

小丑鱼00
22分钟前
0
0
初识css自定义属性

这算是一篇两篇文章译文的糅合体,旨在帮助理解css自定义属性。 今天,CSS预处理器是Web开发的标准。 预处理器的一个主要优点是它们使您能够使用变量, 这有助于您避免复制和粘贴代码,并简化...

嫣然丫丫丫
32分钟前
1
0
JAVA基础--session共享的前生今世

session共享的前生今世 Session及cookie基本概念及生命周期 session   当浏览器发起一个新的HTTP请求时,WEB服务端会主动创建一个session.并分配一个sessionID作为服务端识别客户端的一个标...

spinachgit
40分钟前
0
0
Deepin Linux 下把 UC 缓存视频变为 MP4 文件

本文是利用 FFMPEG 的功能实现的。 生成 file.txt文件 因为缓存文件都是数字,且文件夹内还有其他文件,包括 index.* 的文件。 $ ls -1v --hide=file.txt --hide=index* > file.txt 解释 ls...

不避风云
41分钟前
0
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部