《Java安全编码标准》一1.5 拒绝服务

简介: 本节书摘来自华章出版社《Java安全编码标准》一书中的第1章,第1.5节,作者 (美)Fred Long,Dhruv Mohindra,Robert C. Seacord,Dean F. Sutherland,David Svoboda,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.5 拒绝服务

拒绝服务攻击试图使计算机的资源不可获得,或者对需要使用该计算机资源的用户来说,会造成资源不足的情况。通常这种攻击是持续服务的服务器系统需要重点关注的,它与桌面应用程序有很大区别;然而,拒绝服务的问题可以出现在所有类别的应用上。

1.5.1 资源耗尽型的拒绝服务

拒绝服务可能出现在,相对于输入数据需要的资源消耗来说,使用比例上更为巨大的资源。通过客户端软件检查资源是否被过度消耗,并希望用户来处理与资源相关的问题是不合理的。但是,存在这样的客户端软件,它们可以检查那些可能会导致持久拒绝服务的输入,比如将文件系统进行填充的操作。
《Java安全编码指南》(Secure Coding Guidelines for the Java Programming Language)[SCG 2009]中列举了可能的攻击的例子:
请求一个大的矢量图片,如SVG文件或者字体文件。
“Zip炸弹”(Zip bomb)那些如ZIP、GIF或那些经过gzip编码的HTML内容,会因为解压而消耗大量的资源。
“XML解析炸弹”,在解析的时候,在扩展XML所包含的实体时,有可能会使得XML文档急剧增长。可以通过设置XMLConstants.FEATURE_SECURE_PROCESSING功能并设置合理的限度值解决前面的问题。
过度使用的磁盘空间。
在一个散列表中插入了多个密钥,而这些密钥使用相同的散列码。这样会导致最差的性能(O(n2))而不是平均性能(O(n))。
发起许多连接,服务器为每个连接分配大量的资源(例如传统的洪水攻击)。
针对拒绝服务攻击并防止出现资源耗尽的规则,有以下几点:
image
image

1.5.2 与并发相关的拒绝服务

某些拒绝服务攻击是通过试图引入并发问题来实现的,如线程死锁、线程饥饿和竞态。
针对拒绝服务攻击并防止出现并发问题的规则,有以下几点:
image

1.5.3 其他的拒绝服务攻击

其他预防拒绝服务攻击的规则如下:
image

1.5.4 拒绝服务的前提

其他的规则会处理安全漏洞,这些安全漏洞会导致拒绝服务攻击,但它们自己并不足以导致拒绝服务:
image

目录
打赏
0
0
0
0
1408
分享
相关文章
使用Java创建集成JACOB的HTTP服务
本文介绍了如何在Java中创建一个集成JACOB的HTTP服务,使Java应用能够调用Windows的COM组件。文章详细讲解了环境配置、动态加载JACOB DLL、创建HTTP服务器、实现IP白名单及处理HTTP请求的具体步骤,帮助读者实现Java应用与Windows系统的交互。作者拥有23年编程经验,文章来源于稀土掘金。著作权归作者所有,商业转载需授权。
134 2
使用Java创建集成JACOB的HTTP服务
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
93 7
Java智慧工地(源码):数字化管理提升施工安全与质量
随着科技的发展,智慧工地已成为建筑行业转型升级的重要手段。依托智能感知设备和云物互联技术,智慧工地为工程管理带来了革命性的变革,实现了项目管理的简单化、远程化和智能化。
55 5
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
88 2
|
4月前
|
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
87 4
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
81 1
Java 泛型深入解析:类型安全与灵活性的平衡
Java 泛型通过参数化类型实现了代码重用和类型安全,提升了代码的可读性和灵活性。本文深入探讨了泛型的基本原理、常见用法及局限性,包括泛型类、方法和接口的使用,以及上界和下界通配符等高级特性。通过理解和运用这些技巧,开发者可以编写更健壮和通用的代码。
java控制Windows进程,服务管理器项目
本文介绍了如何使用Java的`Runtime`和`Process`类来控制Windows进程,包括执行命令、读取进程输出和错误流以及等待进程完成,并提供了一个简单的服务管理器项目示例。
80 1
|
6月前
|
java安全特性
java安全特性
50 8
Java服务提供接口(SPI)的设计与应用剖析
Java SPI提供了一种优雅的服务扩展和动态加载机制,使得Java应用程序可以轻松地扩展功能和替换组件。通过合理的设计与应用,SPI可以大大增强Java应用的灵活性和可扩展性。
104 18
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等