开发安全Java应用程序的13条规则((Mark)

这篇具有很好参考价值的文章主要介绍了开发安全Java应用程序的13条规则((Mark)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

漏洞喜欢隐藏在复杂性中,因此在不牺牲功能的情况下使代码尽可能简单。使用成熟的设计原则(例如DRY)(不要重复),将帮助您编写更易于查看问题的代码。

始终在代码中公开尽可能少的信息。隐藏实施细节支持可维护和安全的代码。这三个技巧将大大有助于编写安全的Java代码:

  • 充分利用Java的访问修饰符。知道如何为类,方法及其属性声明不同的访问级别将大大保护代码。可以设为私有的所有内容都应该为私有的。
  • 避免反射。在某些情况下,应该使用这种高级技术,但是在大多数情况下,您应该避免使用它们。使用反射消除了强类型,而强类型可能会给您的代码带来弱点和不稳定性。将类名与字符串进行比较很容易出错,并且很容易导致名称空间冲突。
  • 始终定义尽可能小的API和界面。解耦组件并使它们在尽可能小的区域内交互。即使应用程序的某个区域感染了漏洞,其他区域也将是安全的。

Java安全性规则2:避免序列化

这是另一个编码技巧,但重要的是要成为一个规则。 序列化接受远程输入,并将其转换为完全赋值的对象。 它省去了构造函数和访问修饰符,并允许未知数据流成为JVM中的运行代码。 结果,Java序列化在本质上是不安全的。

尽可能避免在Java代码中进行序列化/反序列化。 相反,请考虑使用JSON或YAML之类的序列化格式。 永远不要公开接收并作用于序列化流的不受保护的网络端点。

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

很难相信,但是这种可避免的错误会导致年复一年的痛苦。

当用户在浏览器中输入密码时,密码将以纯文本格式发送到服务器。那应该是它最后一次出现。我们必须先通过单向密码对密码进行加密,然后再将其持久保存到数据库中,然后在每次与该值进行比较时再次进行加密。

密码规则适用于所有个人身份信息:信用卡,社会保险号等。委托给应用程序的任何个人信息都应得到最高程度的保护。

数据库中未加密的凭据是一个巨大的安全漏洞,正在等待攻击者发现。同样,切勿将原始凭据写入日志,或以其他方式传输到文件或网络。要为我们的密码系统创建一个加盐的哈希并务必进行研究并使用推荐的哈希算法。

跳至规则4:始终使用库进行加密;不要自己动手。

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

尽可能使用已知的可靠库和框架。从密码哈希到REST API授权,这适用于整个范围。

幸运的是,Java及其生态系统对此提供了很好的支持。对于应用程序安全性,Spring Security是事实上的标准。它提供了广泛的选择范围和灵活性,以适应任何应用程序体系结构,并且融合了多种安全方法。

解决安全性的第一个本能应该是进行研究,研究最佳实践。例如,如果要使用JSON Web令牌来管理身份验证和授权,查看封装JWT的Java库,然后学习如何将其集成到Spring Security中。

Java安全性规则5:对外部输入抱有偏执

无论是来自用户输入表单,数据存储区还是远程API,都不要信任外部输入。

SQL注入和跨站点脚本(XSS)只是最常见的攻击,可能是由于错误处理外部输入而导致的。一个不为人所知的例子(其中很多例子)是“billion laughs attack(一种 denial-of-service(DoS)攻击,它主要作用于XML文档解析器。它也被称为指数实体扩展攻击,是一种名副其实的XML炸弹。该攻击通过创建一系列递归的XML定义,在内存中产生上十亿的特定字符串,从而导致DoS攻击。原理为:构造恶意的XML实体文件以耗尽服务器可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中,上亿的特定字符串占用内存达到GB级,使得解析器解析非常慢,并使得可用资源耗尽,从而造成拒绝服务攻击。)”,通过这种攻击,XML实体扩展会导致拒绝服务攻击。

每当收到输入时,都应进行完整性检查和消毒。对于可能呈现给另一个工具或系统进行处理的任何事物尤其如此。例如,如果某些事情可能会成为OS命令行的参数,必须小心!

一个特殊的众所周知的实例是SQL注入,它将在下一条规则中介绍。

Java安全规则#6:始终使用准备好的语句来处理SQL参数

每当构建一条SQL语句时,都有可能插值一段可执行代码。

知道了这一点,最好始终使用java.sql.PreparedStatement类来创建SQL。对于NoSQL存储(如MongoDB)也存在类似的功能。如果您使用的是ORM层,则实现将在后台使用PreparedStatements。

Java安全规则#7:不要通过错误消息来揭示实现

生产中的错误消息可以为攻击者提供丰富的信息来源。堆栈跟踪尤其可以揭示有关您正在使用的技术及其使用方式的信息。避免向最终用户显示堆栈跟踪。

登录失败警报也属于此类别。通常接受的错误消息应为“登录失败”与“未找到该用户”或“密码错误”。为潜在的恶意用户提供尽可能少的帮助。

理想情况下,错误消息不应显示您应用程序的基础技术堆栈。保持该信息尽可能不透明。

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

我们需要经常检查安全更新并将其应用到JRE和JDK。

定期检查Oracle主页上的安全警报,以确保知道可用的重要补丁程序。每个季度,Oracle都会为Java的当前LTS(长期支持)版本提供一个自动补丁更新。问题是,只有在购买Java支持许可证的情况下,该补丁才可用。

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
开发安全Java应用程序的13条规则((Mark),2024年程序员面试,安全,java,开发语言
开发安全Java应用程序的13条规则((Mark),2024年程序员面试,安全,java,开发语言
开发安全Java应用程序的13条规则((Mark),2024年程序员面试,安全,java,开发语言

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
开发安全Java应用程序的13条规则((Mark),2024年程序员面试,安全,java,开发语言

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

开发安全Java应用程序的13条规则((Mark),2024年程序员面试,安全,java,开发语言

件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

[外链图片转存中…(img-eu8vTeiO-1710420916915)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录文章来源地址https://www.toymoban.com/news/detail-851081.html

到了这里,关于开发安全Java应用程序的13条规则((Mark)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【容器化应用程序设计和开发】2.5 容器化应用程序的安全性和合规性考虑

    往期回顾: 第一章:【云原生概念和技术】 第二章:2.1 容器化基础知识和Docker容器 第二章:2.2 Dockerfile 的编写和最佳实践 第二章:2.3 容器编排和Kubernetes调度 第二章:2.4 容器网络和存储 容器化应用程序是将应用程序和其依赖项打包到一个独立的、可移植的容器中,以便在

    2024年02月15日
    浏览(40)
  • Java应用程序被安全阻止的解决方法

    在编写和运行Java应用程序时,有时候可能会遇到Java安全阻止的问题。这是因为Java具有安全特性,旨在保护用户免受潜在的恶意代码攻击。当Java检测到潜在的安全风险时,它会阻止应用程序的执行。本文将介绍一些常见的Java安全阻止问题以及解决方法。 问题1:Java应用程序

    2024年02月04日
    浏览(42)
  • STRIDE 威胁建模:面向安全应用程序开发的威胁分析框架

    STRIDE 威胁模型由Microsoft 安全研究人员于 1999 年创建,是一种以 开发人员 为中心的威胁建模方法,通过此方法可 识别可能影响应用程序的威胁、攻击、漏洞,进而设计对应的缓解对策,以降低安全风险并满足公司的安全目标。 STRIDE为每一种威胁英文的首写字母,​​​​​

    2024年02月05日
    浏览(41)
  • 【遇到的问题】JAVA应用程序处于安全原因被阻止。

    直入正题,远程服务器用JAVA连接KVM报以下错(如图)。 应用程序处于安全原因被阻止 无法验证证书 将不执行该应用程序 名称:Java viewer 发行者:ATEN 位置:https://192.168.210:443 通过网上查阅资料以及官网查看,发现应该是与JRE版本有关系,导致证书出问题。(具体原因楼主还在

    2024年02月15日
    浏览(30)
  • 应用程序已被Java 安全阻止-- 如何全局设置Java 控制面板参数

    最近遇到一个客户问题,客户方存在一个使用场景为使用IE访问一个页面 之后通过点击页面的按钮调起一个applet程序,结果遇到了一个弹窗告警:应用程序已被Java安全阻止。 对于这个问题 解决方案有两个: 1.将访问的页面站点加入到例外站点中。 2.修改Java控制面板中参数,

    2024年02月04日
    浏览(48)
  • RK3568平台开发系列讲解(Linux系统篇)Linux 应用程序的安全

    🚀返回专栏总目录 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇让我们如何写出尽可能安全的应用程序。

    2023年04月16日
    浏览(34)
  • 构建安全高效的Web应用程序:IntelliJ IDEA的后端开发指南

    在当今互联网时代,Web应用项目的开发变得越来越重要。为了提供更好的用户体验和良好的系统可扩展性,采用前后端分离的设计模式已成为众多开发团队的首选。 前后端分离是一种软件架构模式,将传统的单体应用中的前端和后端部分进行解耦,使其成为独立的两个部分。

    2024年02月03日
    浏览(44)
  • WebSphere是IBM开发的一套企业级应用服务器软件,提供了强大的安全功能,以保护企业应用程序的安全性和机密性

    WebSphere是IBM开发的一套企业级应用服务器软件,提供了强大的安全功能,以保护企业应用程序的安全性和机密性。下面是WebSphere提供的一些主要安全功能的介绍: 身份验证(Authentication):WebSphere支持多种身份验证机制,包括基于用户名和密码的认证、基于数字证书的认证、

    2024年03月11日
    浏览(49)
  • 【Java应用程序开发】【期末复习题】【2022秋】【答案仅供参考】

    答题时长:90分钟 试卷共包含57道题目,其中单选题30道,多选题10道,判断题10道,简答题5道,程序题2道。 1.定义一个类,必须使用的是( ) A.public B.class C.interface D.static 2.抽象方法:( ) A.可以有方法体 B.不可以出现在非抽象类中 C.有方法体的方法 D.抽象类中的方法都是抽

    2024年02月11日
    浏览(31)
  • 高通Android 12/13 默认应用程序授予权限

    1、一提到权限很多Android开发者都会想到 比如拨打电话 读取手机通讯录 定位 这些都是需要申请权限,Google Android 6.0之后(sdk 23) 需要app动态申请权限 或者权限组 2、我这里打个比方 比如需要在fm应用 默认打开mic权限  3、我们需要知道这个默认应用程序的包名 (例如 xxx.

    2024年02月01日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包