有效提升java编程安全性的12条黄金法则

安全性是软件开发中最复杂,最普遍和最重要的考量之一。Java是具备许多内置安全性功能的开发平台,java在长期的发展过程当中,已经通过了不少高强度的安全测试,并常常更新安全漏洞。而且Java生态系统还包括用于分析和报告安全性问题的各类工具。 vue

可是,即便有了可靠的开发平台,也一样要保持警戒。应用程序开发是一项复杂的工做,漏洞会隐藏起来不易发现。程序员应该在应用程序开发的每一个阶段都考虑安全性,从类级别的代码编程到API端点受权都应该被考虑在内。java

如下为你们介绍的基本规则,能够为构建更安全的Java应用程序奠基良好的基础。供参考学习!程序员

Java安全规则1:编写简单而强大的Java代码

漏洞喜欢隐藏在复杂代码中,所以在不牺牲功能的状况下使代码尽量简单。在代码中公开尽量少的信息,隐藏实施细节,支持可维护和安全的代码。下面三个技巧将大大有助于编写安全的Java代码:web

  • 充分利用 Java的访问修饰符。为类,方法及其属性声明访问级别,能够设为private的全部内容都应该为private。 
  • 避免过分使用反射和内省。在某些状况下,应该使用这种高级技术,可是在大多数状况下,您应该避免使用它们。使用反射消除了强类型化,可能会给代码引入漏洞和不稳定性。将类名与字符串进行比较容易出错,而且很容易致使名称空间冲突。
  • 始终定义尽量小的API和接口。解耦组件并使它们在尽量小的区域内交互。即便您的应用程序的某个区域出现漏洞,其余区域也将是安全的。 

Java安全规则2:避免使用Java自带的序列化

序列化接受远程输入,并将其转换为彻底赋值的对象。它省去了构造函数和访问修饰符,并容许未知数据流成为JVM中的运行代码。Java序列化从根本上来讲是不安全的。spring

Oracle就有长期计划 从Java中删除自带的序列化功能,甲骨文公司Java平台小组的首席架构师Mark Reinhold说,Java漏洞中的三分之一或更多都涉及到序列化的问题。sql

尽量避免在Java代码中使用自带的序列化/反序列化。能够考虑使用JSON或YAML之类的序列化格式,而且永远不要公开接收并做用于序列化流的不受保护的网络请求端点。数据库

Java安全规则3:永远不要公开未加密的凭证或PII

不少的应用,当用户在浏览器中输入密码时,密码将以纯文本格式发送到您的服务器。正确的作法是:先经过单向密码对密码进行加密,而后再将其持久保存到数据库中,而后在每次与该值进行比较时再次进行加密保存。
密码规则适用于全部我的身份信息(PII):信用卡,社会保险号等。委托给您应用程序的任何我的信息都应获得最高程度的保护。
数据库中未加密的凭据或PII是一个巨大的安全漏洞,正在等待攻击者发现。一样,切勿将原始凭据写入日志,或以其余方式传输到文件或网络。密码与密钥分开保存。编程

Java安全规则4:使用已知和通过测试的库

尽量使用已知的可靠库和框架。从密码哈希到REST API受权,都要谨慎的选择第三方库。对于web应用程序安全性,Spring Security已是事实上的标准。它提供了普遍的选择和灵活性,以适应任何应用程序体系结构,而且融合了多种安全方法。后端

Java安全规则5:不要对外部输入抱有幻想

不管是来自用户输入表单,数据存储区仍是远程API,对于任何外部输入都不要放松警戒。浏览器

SQL注入和跨站点脚本(XSS)是因为处理外部输入错误而引发的最多见攻击。每当您收到输入时,都应该对其进行检查和校验。

Java安全规则6:始终使用PreparedStatement来处理SQL参数

每当您构建一条SQL语句时,都有可能被插入一段可执行的SQL代码。始终使用java.sql.PreparedStatement类建立SQL是一个好习惯。对于NoSQL存储(如MongoDB)也存在相似的功能。绝大部分的ORM框架,都支持该功能。

Java安全规则7:不要向用户展现服务异常信息

生产中的服务异常信息能够为攻击者提供丰富的信息来源。堆栈跟踪尤为能够揭示有关您正在使用的技术及其使用方式的信息。避免向最终用户显示堆栈跟踪信息,这很是重要。

Java安全规则8:使安全性发布保持最新

经过按期检查Oracle主页以获取security-alerts确保知道可用的重要补丁程序 。每一个季度,Oracle都会为Java的当前LTS(长期支持)版本提供一个自动补丁更新。问题是,只有在您购买Java支持许可证的状况下,该补丁才可用。

Java安全规则9:查找依赖库漏洞

有许多工具能够自动扫描您的代码库和依赖项是否存在漏洞。OWASP(开放式Web应用程序安全性项目)是致力于改善代码安全性的组织。OWASP的值得信赖的高质量自动代码扫描工具列表 ,包括多个面向Java的安全检查工具。

Java安全规则10:监视和记录用户活动

若是您没有积极地监视应用程序运行状态,那么即便是简单的暴力攻击也可能会成功攻陷你的app。使用监视和日志记录工具来监视应用程序的运行情况。监视能够提醒您注意到没法被解释的峰值,而日志记录能够帮助您了解攻击后出了什么问题。

Java安全规则11:小心DoS攻击

每当要执行消耗资源的的操做(例如将压缩文件解压缩)时,都应该监视资源使用量的增加。对其进行监视,并防止服务器资源过分使用,以及更多的自动化的应急响应方案。

Java安全规则12:考虑使用Java安全管理器

Java有一个安全管理器,可用于限制正在运行的进程能够访问的资源。它能够根据磁盘,内存,网络和JVM访问来隔离程序。缩小对应用程序的这些资源的过分占用,能够减小攻击可能形成的危害。

欢迎关注个人博客,里面有不少精品合集

  • 本文转载注明出处(必须带链接,不能只转文字):字母哥博客

以为对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创做动力! 。另外,笔者最近一段时间输出了以下的精品内容,期待您的关注。

相关文章
相关标签/搜索