美文网首页
第三十二章、java应用开发中的注入攻击

第三十二章、java应用开发中的注入攻击

作者: 小母牛不生产奶 | 来源:发表于2018-11-19 22:25 被阅读7次

注入式攻击时一类非常常见的攻击方式,其基本特征时程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果;例如:sql注入

操作系统命令注入,java语言提供了类似Runtime.exec(...)的API,可以执行特定命令;

xml注入攻击,java核心类库提供了全面的XML处理、转换等各种API,而XML自身时可以包含动态内容的,例如XPATH,如果使用不当,可能导致访问恶意内容。还有类似LDAP等允许动态内容的协议,都是可能利用特定命令,构造注入攻击的,包括XSS(Cross-site Scripting)攻击,虽然并不和java直接相关,但也可能在JSP等动态页面中发生。


java安全机制可以简单归为三个主要组成部分:

1、运行时安全机制,可以简单认为,就是限制java运行时的行为,不要做越权或者不靠谱的事情,具体如下:

    在类加载过程中,进行字节码验证,以防止不合规的代码影响JVM运行或者载入其他恶意代码;

    类加载器本身也可以对代码之间进行隔离,例如,应用无法获取启动类加载器对象实例,不同的类加载器也可以起到容器的作用,隔离模块之间不必要的可见性等;

    利用SecurityManager机制和相关的组件,限制代码的运行时行为能力,其中,可以定制policy文件和各种粒度的权限定义,限制代码的作用域和权限,例如对文件系统的操作权限,或者监听某个网络端口的权限等

可以看到,Java的安全模型时以代码为中心的,贯穿了从类加载,如URLClassLoader加载网络上的java类等,到应用程序运行时权限检查等全过程。

另外,从原则上来说,java的GC等资源回收管理机制,都可以看作时运行时安全的一部分,如果相应机制失效,就会导致JVM出现OOM等错误,可看作是另类的拒绝服务;

第二,java提供的安全框架API,这是构建安全通信等应用的基础。例如:

    加密、解密API

    授权、鉴权API

安全通信相关的类库,比如基本HTTPS通信协议相关标准实现,如TLS1.3;或者附属的类似证书撤销状态判断(OSCP)等协议实现。

第三,就是JDK集成的各种安全工具:

    keytool,这是个强大的工具,可以管理安全场景中不可或缺的密钥、证书,并且可以管理java程序使用的keystore文件。

    jarsigner,用于对jar文件进行签名或者验证。

在应用实践中,如果对安全要求非常高,建议打开SecurityManager,请注意其开销,通常只要开启SecurityManager,就会导致10%~15%的性能下降,在JDK9以后,这个开销有所改善。


安全漏洞

按照传统的定义,任何可以用来绕过系统安全策略限制的程序瑕疵,都可以算作安全漏洞。具体原因可能非常多,设计或实现中的疏漏、配置错误等,任何不慎都又可能导致安全漏洞出现,例如恶意代码绕过了java沙箱的限制,获取了特权等

相关文章

  • 第三十二章、java应用开发中的注入攻击

    注入式攻击时一类非常常见的攻击方式,其基本特征时程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能...

  • SQL注入攻击

    [SQL注入攻击] SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式...

  • java编程学习笔记——mybatis SQL注入问题

    SQL 注入攻击 首先了解下概念,什么叫SQL 注入: SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序...

  • Java安全编程指南

    SQL注入防范 SQL注入指利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的攻击方法。Java程...

  • 3.1 SQL注入

    3.1.1 注入分类   SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序。 在应用程序中,如果没有做恰当...

  • 谈谈sql注入之注入工具介绍(六)

    SQL注入攻击是最为常见的Web应用程序攻击技术。同时SQL注入攻击所带来的安全破坏也是不可弥补的。那么sql注入...

  • SQL 注入有病,安全专家有何良方?

    SQL 注入攻击现状 SQL 注入攻击是一个非常老的攻击方式,由于很多应用程序都存在 SQL 注入漏洞而且 SQL...

  • Tweak及TheOS简介

    在上篇介绍MobileSubstrate的文章中,说到第三方开发者通过MobileSubstrate向应用中注入自...

  • SQL 注入

    什么是SQL注入 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。...

  • 关于SQL注入与避免

    什么是SQL注入 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。...

网友评论

      本文标题:第三十二章、java应用开发中的注入攻击

      本文链接:https://www.haomeiwen.com/subject/ryrzfqtx.html