每个Java开发人员都必须避免的9个安全错误

Checkmarx CxSAST是功能强大的源代码分析(SCA)解决方案,旨在从根本上识别,跟踪和修复技术和逻辑安全缺陷:源代码。 在这里查看 !

自从1995年中期引入Java以来​​,它已经走了很长一段路。 它的跨平台特性使其成为客户端Web编程的基准。 但是由于网络犯罪和黑客行为由于其广泛的使用和分布而达到流行的程度,因此安全的Java开发需求已成为当务之急。

卡巴斯基实验室最近的一份报告称, Java是受到攻击最多的编程语言,全球范围内越来越多的黑客事件被举报。 Java的易感性很大程度上归因于其分段问题。 并非所有开发人员都在使用最新版本(Java 9),这基本上意味着并非总是应用最新的安全更新。

应用程序安全领域内越来越多的共识是,高代码完整性是确保应用程序健壮并不受顶级黑客技术攻击的最佳方法。 以下文章基于OWASP Java项目松散地包含9条建议,这是一项全面的工作,旨在帮助Java和J2EE开发人员生成可靠的应用程序。

每个Java开发人员都必须避免的9种编码应用程序错误做法

AppSec弊端1 –不限制对类和变量的访问

Java中公开的类,方法或变量基本上是对坏蛋的公开邀请。 确保所有这些默认情况下都设置为私有。 这将自动提高应用程序代码的健壮性,并阻塞潜在的攻击途径。 应该使用访问器来限制可访问性,并且应明确记录非私有事物。

AppSec Malpractice 2 –取决于初始化

开发人员应该意识到,构造函数不是必须实例化Java对象的事实。 分配未初始化对象的备用方法的存在是必须解决的安全问题。 理想的解决方案是对类进行编程,以使对象在执行任何操作之前先验证初始化。

可以通过执行以下步骤来实现:

  • 所有变量都应设为私有。 外部代码应该只能通过安全的get和set方法访问这些变量。
  • 每个对象都应添加初始化的私有布尔变量。
  • 在执行任何操作之前,应使用所有非构造方法来验证初始化是否为true。
  • 如果要实现静态初始化程序,请确保所有静态变量都是私有变量,并使用classInitialized。 就像上面提到的那样,静态初始化器(或构造器)在执行任何操作之前必须确保classInitialized为true。

AppSec Malpractice 3 –未完成课程

许多Java开发人员忘记使类(或方法)成为最终的。 这是一种不当行为,有可能使黑客以恶意方式扩展该类。 声明该类为非公共类并依赖于包范围限制以确保安全性可能会造成高昂的代价。 您必须使所有类都最终定型,并在确实需要时记录未定型的类。

AppSec弊端4 –依赖包装范围

Java编程语言中中等严重性的另一个问题是使用软件包。 这些软件包将类,方法和变量组合在一起,以便于访问,从而有助于开发过程。 但是,黑客可能会在您的程序包中引入流氓类,从而使他们能够访问和修改其中的数据。

因此,建议假定软件包未关闭且可能不安全。

AppSec弊端5 –尽量减少使用内部类的使用

传统的做法是将所有特权代码放入内部类中 ,这已被证明是不安全的。 Java字节码基本上没有内部类的概念,而内部类基本上只提供包级的安全性机制。 更糟糕的是,即使内部类被声明为私有的,它也可以访问外部类的字段。

内部类可以减少Java应用程序代码的大小和复杂性,可以说使它的错误更少,效率更高。 但是可以通过将字节代码注入到程序包中来利用这些类。 最好的方法是不要完全使用内部类,但是如果这样做,请确保将它们定义为私有类,就像外部类一样。

AppSec弊端6 –硬编码

Java开发人员犯下的最常见的安全错误之一就是对敏感信息的硬编码。 此编程错误涉及在代码内插入敏感密码,用户ID,PIN和其他个人数据。 敏感信息应存储在开发树中受保护的目录中。

AppSec错误做法7 –允许将敏感数据回显到UI

java.io软件包没有方法来确保对敏感数据的保护。 默认情况下,JDK附带的keytool应用程序回显用户输入。 Java开发人员应确保为所有击键(通常为“ *”)显示固定的字符。 例如,可以在Swing GUI应用程序中使用javax.swing.JPasswordField

AppSec错误做法8-不注意类别的可克隆性

Java中可用的克隆机制可以使黑客创建您定义的类的新实例。 可以执行此操作而无需任何构造的执行。 安全的Java开发基本上就是将对象变成非克隆对象。 这可以通过以下代码来实现:

appsecmalpractices-1

如果您想走克隆路线,可以通过使用final关键字来实现压倒性的免疫力。 LOC看起来像下面的代码片段:

appsecmalpractices-2

AppSec Malpractice No.9 –过度进行序列化和反序列化

Java具有使对象序列化的机制(反之亦然)。 通常在“关闭” Java虚拟机(JVM)时用于保存对象。 但这是不安全的做法,因为攻击者随后可以访问对象的内部并非法获取私有/敏感属性。 writeobject方法可用于防止序列化。

appsecmalpractices-3

开发人员不应序列化敏感数据,因为那样的话,它将不受Java虚拟机(JVM)的控制。 如果没有解决方法,则应对数据进行加密。

反序列化也是如此,反序列化用于从字节流构造对象。 恶意攻击者可以尝试模仿合法类,并使用此技术来实例化对象的状态。 可以使用类似于writeobject的技术来防止反序列化。 如下所示,此安全方法称为readobject

appsecmalpractices-4

安全SDLC和静态代码分析(SCA)

不幸的是,即使是最安全的开发准则和规则也不足以确保Java应用程序代码完美无缺。 开发人员的错误以及开发期间对代码进行的众多更改最终导致应用程序代码中的漏洞和漏洞。 但是组织应该能够尽快检测到这些。

当今市场上有各种各样的应用程序安全解决方案可用,每种解决方案都具有其独特的功能和优势。 但是理想的解决方案应该提供全面的功能集,并应集成到软件开发生命周期(SDLC)的所有阶段中,如果可能的话,可以实现自动测试以获得最佳结果。

属于静态应用程序安全测试(SAST)方法论的静态代码分析(SCA)就是这样一种解决方案。 这种技术的好处很多。 它们包括:

  • 创建安全的SDLC(sSDLC) –通过将扫描解决方案集成到开发的所有阶段,甚至可以在构建完成之前就扫描应用程序代码。 测试源代码可以及早缓解漏洞,并显着加快开发过程。
  • 多功能性 – SCA可以无缝地融合到几乎任何开发环境和模型中。 这可以是传统的Waterfall方法或持续集成(CICD)模型。由于其快速的扫描速度和准确的结果,该测试解决方案在敏捷和DevOps环境中也有效。
  • 最佳的缓解性能 – SCA具有独特的功能,可以向开发人员显示代码中所检测到的漏洞的确切位置,从而可以快速有效地进行修复。 该安全解决方案还扫描具有广泛框架兼容性的多种编程和脚本语言。
  • 范围广泛的漏洞 – SCA涵盖了广泛的问题–从应用程序层漏洞一直到编码漏洞。 甚至可以进行高级分析。 例如,可以通过扫描源代码来检测业务逻辑缺陷。 这为组织和开发人员提供了全面的安全解决方案。
  • 投资回报(ROI) –总结起来,早期漏洞检测可以大大缩短补救时间并加快开发速度。 这有助于避免延迟,并最大程度地减少了占用大量资源的维护程序的需求。 换句话说,组织可以节省大量时间和金钱。

当开发人员和安全部门齐头并进并采取上述步骤时,就可以实现Java应用程序的安全性。 尽管开发人员可以并且应该实践安全的编码并生成具有高度完整性的代码,但CISO和安全人员应实施正确的解决方案,以尽早消除漏洞和漏洞。

只有有关各方的积极主动的方法才能帮助组织创建安全的应用程序。

Checkmarx CxSAST是功能强大的源代码分析(SCA)解决方案,旨在从根本上识别,跟踪和修复技术和逻辑安全缺陷:源代码。 在这里查看 !

翻译自: https://www.javacodegeeks.com/2015/05/9-security-mistakes-every-java-developer-must-avoid.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]iPhone本地化总结

再做本地化的过程中参考了许多资料,现在的中文资料还是少之又少,希望能给大家一些帮助。 1、本地化字符串,网上那些方法我就不说了,我只更正一点:如果你的Classes下面有子文件夹会报错,使用下面的命令&…

【APICloud系列|9】APICloud自定义APPloader一个月未更新,快速更新的办法

时间比较紧,简单写一下流程。 1.登录APICloud后台,找到模块,自定APPLoader,直接编译ANdroid版本,下载到本地。 2.找到当时创建自定义apploader的文件夹,将下载的安装包复制过来,并重新命名为load.apk,删除原来的安装包。 3.修改load.conf配置文件.并保存关闭。 版本号从…

珍藏多年的视频文案网站

5g元年,视频需要的文案网站你值得拥有 一、TOPYS | 全球顶尖创意分享平台 网址链接:TOPYS:https://www.topys.cn/ TOPYS立志打造一个多元、完备的泛创意知识产品系统和学习平台,试图成为A Creative Institution,希望借由创意的学…

vue项目安装less_部署vue项目、安装mongodb

一、node运行环境1、npm install -g n 通过npm 全局安装node2、sudo n 8.16.0 设置node版本Password:install : node-v8.16.0mkdir : /usr/local/n/versions/node/8.16.0fetch : https://nodejs.org/dist/v8.16.0/node-v8.16.0-darwin-x64.tar.gz#############################…

电脑正常启动黑屏,安全模式正常启动的解决办法

今天早上起来,打开电脑,输入账号信息进入后发现是黑屏,本以为电脑卡顿等等看,我看还是黑屏就关机重启了几次发现还是黑屏,然后进入安全模式下发现页面能打开,但是我们都知道安全模式只会加载一些必要的程序…

2.4 万余门在线课程免费开放!大量计算机相关课程.(赶紧收藏)

日前,教育部印发指导意见,面向全国高校免费开放全部优质在线课程和虚拟仿真实验教学资源。 截至 2 月 2 日,教育部组织了 22 个在线课程平台制定了多样化在线教学解决方案,免费开放包括 1291 门国家精品在线开放课程和 401 门国家虚拟仿真实验课程在内的在线课程 2.4 万余门…

Java Micro Framework:您无法忽略的新趋势

什么是Java微框架,为什么要使用它们? 每种语言都有权衡。 对于Java,要成为一种安全,经过严格测试,向后兼容的语言,就要在敏捷性和精简性方面做出一些牺牲。 毫无疑问,它有一些冗长和冗长的内容…

springboot mysql时区设置_java/springboot/mysql时区问题解决方案

解决步骤:先理清楚逻辑数据从mysql查出-->进入docker(没容器化跳过)-->进入相应的应用程序(比如java或者框架springboot之类的)-->程序处理完输出返回给前端或者页面-->展示第一步:先查mysql所以先进入mysql控制台,select now(),时区没问题则…

【APICloud系列|10】最新苹果APP上架App Store流程(超详细)

2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用。 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好,app能正常运行再上架

proxifier访问https错误_教你实现IE访问https网站不出错方法

不同的系统出现的问题是不一样的,有小伙伴在电脑账打开我们的网站的时候发现不能正常的打开我们的电脑出现,是否只查看安全传送的网页内容的错误的提示,那我们遇到这个问题应该怎么处理访问https网站呢,今天小编就来跟大家分享一下…

UA Web挑战会议:针对初创公司的SpringIO

在本周,我在“后端”部分的UA Web挑战会议上发表了讲话。 我在演讲中选择了一个奇怪的话题-“面向初创企业的SpringIO”。 结果是什么? 我将在下面总结。 在过去三年中,我开发了各种个人Web项目。 我再也没有称它们为“初创企业”&#xff0…

python 小说分析_谁还没看过几本金庸小说?用Python分析一下当年最爱看的主角是谁...

jieba用起来非常简单,短短几行代码就完成了分词工作(下图),可是...仔细一看发现哪里不对了“段誉”作为一个姓名没有被单独分出来,而是和其他一些动词连在一起,另外也有一些角色名字被拆分成了两个甚至更多的单词,例如…

【APICloud系列|13】移动端适配通揽

一、为什么要移动端适配? 一般情况下设计稿的设计师按照 375 的尺寸设计,然而,在现在移动终端(就是手机)快速更新的时代,每个品牌的手机都有着不同的物理分辨率,这样就会导致,每台设备的逻辑分辨率也不尽相同,此时 375 的设计稿,如果想要还原那基本是不可能了,因为如…

初级程序员应该怎么办?

你现在工作迷茫?不防看看这几条建议 01、吃透一门编程语言 这个技能看起来似乎没有必要强调,毕竟程序员不懂一种编程语言也说不过去啊。我之所以再次强调是怕你“贪心”,以为技多不压身就拼了命的学很多种编程语言。 有个大二的学生就曾经问我:“你好呀,老哥,有个问题…

【APICloud系列|14】xcode下载地址

下载地址:https://developer.apple.com/download/more/ 这个是使用苹果Mac下载xcode用于上架appstore打包的软件。 Windows的Xcode:在PC上安装Xcode的5种方法 参考帖子:https://blog.csdn.net/qq_36666115/article/details/86485305

kail利用msf工具对MS12-020漏洞进行渗透测试

kail利用msf工具对MS12-020漏洞进行渗透测试 MS12-020全称Microsoft Windows远程桌面协议RDP远程代码执行漏洞 kail利用msf工具对MS12-020漏洞进行渗透测试: 实验环境: 工具:metasploit 靶机两台:windows 7sp1和kali2020 攻…

Spark K-Means

K-Means(K均值) 介绍 K-Means是被应用的最广泛的基于划分的聚类算法,是一种硬聚类算法,属于典型的局域原型的目标函数聚类的代表。算法首先随机选择k个对象,每个对象初始地代表一个簇的平均值或者中心。对于剩余的每个…

kail利用msf工具对ms17-010(永恒之蓝)漏洞入侵渗透Win7

kail利用msf工具对ms17-010(永恒之蓝)漏洞入侵渗透Win7 前言: 提到操作系统漏洞,大家肯定听说过耳熟能详的永恒之蓝(MS17-010)了,他的爆发源于WannaCry勒索病毒的诞生。 该病毒是不法分子利用…

mysql 删除版本信息_linux 删除mysql

写作背景明天项目上线,今天晚上在客户的机房进行网站的部署,在安装mysql的时候出现了一个问题,就是死活安装不上,说已经存在mysql,最后分析错误信息才知道,原来是centos 6.3 自带安装了mysql 5.1,因为我是通…

微信连接WIFI并关注公众号的方法

分享一个改造路由器来实现微信连wifi关注公众已经成为一种高效的引流方法。 前提是先有自己的路由器、认证的公众号(服务号或订阅号)、开通过门店小程序。 1.进入公众号后以此选择“微信连wifi”→“设备管理”→详情,拿到公众号的三个参数…