《Java编码指南:编写安全可靠程序的75条建议》—— 指南4:确保安全敏感方法被调用时参数经过验证
2023-09-11 14:17:34 时间
当应用程序代码调用安全敏感方法时,必须验证被传递到方法中的参数。特别是,null值可能会被某些特定的安全敏感方法解读为良性参数,导致覆盖程序默认设置。尽管安全敏感方法应该是防御式编码,但是客户端代码也必须验证参数。如果不这样做,就会导致特权升级,可以执行任意代码。
谷粒学苑项目实战(十四):实现阿里云视频点播功能(java编码实现) 视频点播(ApsaraVideo for VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。
Java中将base64编码字符串转换为图片 前一段时间,在做摄像头拍照上传,摄像头拍的照片为base64编码格式的字符串,需要上传至项目中,则需要使用到将base64编码字符串转换为图片
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
本节书摘来异步社区《Java编码指南:编写安全可靠程序的75条建议》一书中的第1章,第1.4节,作者:【美】Fred Long(弗雷德•朗), Dhruv Mohindra(德鲁•莫欣达), Robert C.Seacord(罗伯特 C.西科德), Dean F.Sutherland(迪恩 F.萨瑟兰), David Svoboda(大卫•斯沃博达),更多章节内容可以访问云栖社区“异步社区”公众号查看。
指南4:确保安全敏感方法被调用时参数经过验证当应用程序代码调用安全敏感方法时,必须验证被传递到方法中的参数。特别是,null值可能会被某些特定的安全敏感方法解读为良性参数,导致覆盖程序默认设置。尽管安全敏感方法应该是防御式编码,但是客户端代码也必须验证参数。如果不这样做,就会导致特权升级,可以执行任意代码。
违规代码示例下面的违规代码示例展示了一个双参数方法doPrivileged(),它的第二个参数是一个访问控制上下文。这段代码的功能是从以前保存的上下文中恢复特权。
AccessController.doPrivileged( new PrivilegedAction Void () { public Void run() { // ... }, accessControlContext);``` 当传入空的(null)访问控制上下文时,双参数方法doPrivileged()不能仅对之前保存的上下文进行授权。因此,当accessControlContext参数为null时,这段代码可能会导致过度授权。如果程序员打算以一个空的访问控制上下文调用AccessController.doPrivileged()方法,那么必须显式传递一个null参数或使用单参数版本的AccessController.doPrivileged()方法。 ####合规解决方案 下面的合规解决方案通过确保accessControlContext不为空,阻止了程序的过度授权。
if (accessControlContext == null) {
throw new SecurityException("Missing AccessControlContext");
}
AccessController.doPrivileged(
new PrivilegedAction() {
public Void run() {
// ...
}
}, accessControlContext);`
必须彻底理解安全敏感方法,并验证它们的参数,以防止意想不到的参数值(如空值)导致的极端情况。如果有意想不到的参数值被传递给安全敏感方法,那么有可能会导致程序可以执行任意代码,还有可能会导致特权升级。
谷粒学苑项目实战(十四):实现阿里云视频点播功能(java编码实现) 视频点播(ApsaraVideo for VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。
Java中将base64编码字符串转换为图片 前一段时间,在做摄像头拍照上传,摄像头拍的照片为base64编码格式的字符串,需要上传至项目中,则需要使用到将base64编码字符串转换为图片
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 深入java面向对象五:Java的内存管理
- 深入java面向对象四:Java 内部类种类及使用解析(转)
- Java IO--字符编码getProperty、getBytes
- [转载文章]Google的Java编程风格指南(Java编码规范)
- java错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Bu
- Java实现 LeetCode 726 原子的数量(递归+HashMap处理)
- Java实现 LeetCode 693 交替位二进制数(位运算)
- Java实现 LeetCode 676 实现一个魔法字典(暴力)
- Java实现 LeetCode 404 左叶子之和
- java实现显示为树形
- java实现第七届蓝桥杯有奖竞猜
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- java 文件的编码 问题
- 【JAVA秒会技术之秒杀面试官】秒杀Java面试官——集合篇(一)
- (转载)java多态(2)-------Java转型(向上或向下转型)
- 【JAVA】 01-Java基础知识
- java插入排序兼编码注意
- HTTP基本认证(Basic Authentication)的JAVA示例
- java向图片上写字,两个图片合并的方法
- java.lang.OutOfMemoryError: Java heap space 解决方法
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- Java Object类中的finalize()方法
- 用Java打印中文字符的GBK,UTF8和UTF16编码
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Atitit.jsou html转换纯文本 java c# php
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
- paip.提升性能----java 无锁结构(CAS, Atomic, Threadlocal, volatile, 函数式编码, 不变对象)
- 【java】Java生成微信小程序二维码
- 下载各个版本java (Java Development Kit)
- 使用POI操作excel表格的时候,报错:java.lang.NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap
- 【java】Java 抽象类