Java 核心技术面试精讲
杨晓峰
前 Oracle 首席工程师
125942 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 44 讲
Java 核心技术面试精讲
15
15
1.0x
00:00/00:00
登录|注册

第31讲 | 你了解Java应用开发中的注入攻击吗?

常见的表现形式和如何防范
Man-In-The-Middle(MITM)攻击
安全漏洞的表现形式和如何防范
JDK集成的各种安全工具
Java提供的安全框架API
运行时安全机制
Java安全基础的构成部分
安全漏洞的定义和如何避免
Java应用安全的主要涉及安全机制
了解基础的安全实践就可以满足要求
Java工程师未必都要成为安全专家
XML注入攻击
操作系统命令注入
SQL注入攻击
一课一练
知识扩展
安全领域的考点分析
安全领域的入门题目
主要的注入式攻击途径
注入式(Inject)攻击是一类非常常见的攻击方式
了解并防范各种安全漏洞是必要的
Java安全基础包括运行时安全机制、安全框架API和安全工具
Java应用安全涉及安全机制和如何避免安全漏洞
了解基础的安全实践对Java工程师很重要
Java应用开发中的注入攻击是常见的安全威胁
安全是软件开发的永恒主题
7月19日极客Live主题
了解Java应用开发中的注入攻击
Java作为软件开发的基础平台之一,成为安全攻击的首要目标之一
安全是软件开发领域永远的主题之一
总结
参考文章

该思维导图由 AI 生成,仅供参考

安全是软件开发领域永远的主题之一,随着新技术浪潮的兴起,安全的重要性愈发凸显出来,对于金融等行业,甚至可以说安全是企业的生命线。不论是移动设备、普通 PC、小型机,还是大规模分布式系统,以及各种主流操作系统,Java 作为软件开发的基础平台之一,可以说是无处不在,自然也就成为安全攻击的首要目标之一。
今天我要问你的问题是,你了解 Java 应用开发中的注入攻击吗?

典型回答

注入式(Inject)攻击是一类非常常见的攻击方式,其基本特征是程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果。
下面是几种主要的注入式攻击途径,原则上提供动态执行能力的语言特性,都需要提防发生注入攻击的可能。
首先,就是最常见的 SQL 注入攻击。一个典型的场景就是 Web 系统的用户登录功能,根据用户输入的用户名和密码,我们需要去后端数据库核实信息。
假设应用逻辑是,后端程序利用界面输入动态生成类似下面的 SQL,然后让 JDBC 执行。
Select * from use_info where username = “input_usr_name” and password = “input_pwd”
但是,如果我输入的 input_pwd 是类似下面的文本,
“ or “”=”
那么,拼接出的 SQL 字符串就变成了下面的条件,OR 的存在导致输入什么名字都是复合条件的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Java应用开发中的安全威胁及防范措施 Java应用开发中的安全威胁是一项重要的议题。本文介绍了Java应用开发中常见的注入攻击,包括SQL注入、操作系统命令注入和XML注入等典型攻击方式,并强调了安全意识的重要性。文章还探讨了Java的安全基础,包括运行时安全机制、安全框架API和JDK集成的安全工具。此外,还提到了安全漏洞的表现形式和防范措施,例如针对SQL注入的防范方法。总的来说,本文通过具体案例和问题引导,为读者提供了Java应用开发中的安全基础知识,帮助他们建立对安全领域的整体印象。 文章还提到了一些思考题,如Man-In-The-Middle(MITM)攻击及其常见表现形式和防范方法,为读者提供了进一步思考和学习的机会。此外,还介绍了作者将进行的直播分享活动,为读者提供了参与交流的机会。 总的来说,本文内容丰富,涵盖了Java应用开发中的安全威胁及防范措施,对读者快速了解文章概览具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 核心技术面试精讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • 羊羊羊
    也不是很懂,根据自己的理解讲一下,部分可能是错误的。中间人攻击原理大概是用户在正常上网的时候,同网段的恶意用户对其进行欺骗。恶意用户向局域网广播:我是路由器,然后正常用户(电脑无防御)收到以后认为恶意用户就是路由器,然后向恶意用户发送数据包,恶意用户可以截获数据包,再向路由器发送正常用户的数据包,路由器将返回的数据包在给恶意用户,恶意用户在给正常用户,恶意用户就形成了中间人的效果,可以向返回的数据包注入html代码,达到劫持用户网站的效果,不过现在大部分的网站都是https且双向认证,比较难获取到用户发送数据包中的账号密码。

    作者回复: 不错,如果从Java API的角度看,也存在很多可能,即使是https,在连接没完整建立前,最初的通信并不是安全的,例如,过程中发生proxy authentication之类,其实还是http

    2018-07-17
    19
  • 苦行僧
    每次使用开源组件,经常关注使用版本修复的问题列表,其中的安全修复值得重点关注

    作者回复: 安全是永远不能忽视的主题

    2019-02-08
    12
  • 鸡肉饭饭
    杨老师,您好,被一个安全问题困扰许久。就是开发者是否能够通过一定的手段修改jdk中的String类,并将修改后的String类进行替换,对于这个问题,应当从哪里开始寻找答案?谢谢

    作者回复: 你是说,类似自己build一个jdk吗?但即使改写里面的方法也未必生效,因为有的方法是用的intrinsic的内部实现

    2018-07-17
    3
    8
  • 王建
    中间人攻击最容易理解的可能就是fiddler吧,他可以截获request重新组织request的数据,有个专业的攻击工具叫burp。
    2018-07-18
    11
  • 随心而至
    PreparedStatement又是如何防范sql注入的呢? preparedStatement = "SELECT * FROM users WHERE name = ?"; preparedStatement.setString(1, userName); 查询“ SELECT * FROM users where where name =?” 将被发送到数据库,数据库会对其进行编译,然后将替换setString中的userName。 如果数据库看到非法值,它将引发错误。 因此,'or'1'='1将被视为一个完整的字符串,而不是包含运算符or和=的语句, 也就是数据库将其视为值为 "' or '1'='1"的字符(虽然是个奇怪的字符串)。 总结就一句话,占位符只能存储给定类型的值,而不能存储任意SQL片段(你写片段,我也把你看成是整体,即该类型的特别输入,比如上面的"' or '1'='1"就被看成是一个特别的String) https://stackoverflow.com/questions/4333015/does-the-preparedstatement-avoid-sql-injection https://en.wikipedia.org/wiki/SQL_injection
    2021-01-06
    10
  • 爪哇夜未眠
    期待杨晓峰老师直播!
    2018-07-17
    10
  • 会网络的老鼠
    或者通过明文传输、存储,这些都存在暴露安全隐患的可能。 朗读者将 明文 读成 文明 难道只有我注意到么?
    2018-11-06
    4
  • wei
    String你懂双亲委派就知道,自己定义String是用不了的。
    2019-05-08
    3
  • 咖啡猫口里的咖啡猫🐱
    我来回答,,鸡肉饭饭的,,,数据存在immutable,mutable,两种,java没有原生immutable支持,string如果是new就是相对意义的immutable,java基本类型和string是有高效缓存池范围,OK?
    2018-07-17
    2
  • 亚林
    中间人攻击,现在https如果被中间人代理了,一般程序要检查https证书是否合法,Android就是在本地保存一份合法https证书去检查线上https是否合法,缺点就是每次https证书到期之前要升级一次客户端,还有就是抓包调试的时候需要去掉https证书检查,才能正常运行抓包。
    2020-06-08
    1
收起评论
显示
设置
留言
21
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部