文档章节

Java安全编程

pior
 pior
发布于 2017/02/24 21:14
字数 932
阅读 31
收藏 0
点赞 0
评论 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
粉丝 25
博文 151
码字总数 22496
作品 0
济南
高级程序员
一句话讲清楚什么是JavaEE

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

qq58edeba279279
06/26
0
0
一句话讲清楚什么是JavaEE

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

qq592fbb5b34ad7
07/02
0
0
Java就业变难了?你需要对自己有点信心

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

糖宝_d864
06/08
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的10个方法

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

拉偶有所依
2015/03/11
0
0
Java开发学习之三版本简介 java编程

  Java编程语言,在更迭迅速的互联网领域多年屹立不倒,足以得见Java这门语言旺盛的生命力,因此,会有很多想要进入互联网领域的朋友,想要学Java来转行开发。但是,所谓“隔行如隔山”,j...

老男孩Linux培训
06/05
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0
亮剑JVM的9款编程语言杀手开发利器重磅推荐

随着各种各样的编程语言铺地盖地向我们涌来,软件世界似乎变得有点疯狂了。JVM的帝国在不断地壮大,它已经不满足于只作为Java语言的运行平台。它勇敢地将自己的触角伸向了JRuby,Groovy等等,...

ndjys
2012/03/19
0
0
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0
国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

强子哥哥
2015/11/16
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
11分钟前
0
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 #!/usr/bin/expectset passwd "123456"spawn rsync -av root@192.168.133.132:/tmp/12.txt /tmp/expect {"yes...

lyy549745
11分钟前
0
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
19分钟前
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
24分钟前
0
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0
nginx负载均衡

一、nginx 负载均衡 拓扑图: 主机信息: 1、负载均衡器1(lb1):192.168.10.205 RHEL7.5 2、负载均衡器2(lb2):192.168.10.206 RHEL7.5 3、web服务器1(web01):192.168.10.207 Centos...

人在艹木中
昨天
0
0
做了一个小网站

做了一个小网站 www.kanxs123.com

叶落花开
昨天
0
0
继社会佩奇之后,又尝试了可爱的蓝胖子,有趣 Python

#哆啦A梦# !/usr/bin/env python3# -*- coding: utf-8 -*-# @Author: dong dong# @Env: python 3.6from turtle import *# 无轨迹跳跃def my_goto(x, y): penup(...

Py爱好
昨天
0
0
shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
昨天
0
0
upstream sent too big header while reading...

nginx 报错:1736 upstream sent too big header while reading response header from upstream 1. 一般处理 location ~ \.php$ { #增加下面两句 fastcgi_buffer_size 128k; ......

dubox
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部