java面试

SQL注入攻击

SQL 注入攻击(考点速记)

1. 定义

用户恶意拼接 SQL 语句,绕过验证、篡改 / 窃取数据库数据的攻击方式。

2. 攻击原理

后台直接拼接前端传入参数拼接 SQL,未做过滤,用户输入非法字符改变原 SQL 逻辑。

sql 复制代码
select * from user where username='${name}' and password='${pwd}'

输入用户名:' or 1=1 -- 拼接后语句恒成立,无需密码直接登录

3. 危害

  1. 非法登录后台
  2. 盗取数据库全部数据
  3. 删除 / 修改数据表、库
  4. 拖库泄露用户信息

4. 产生原因

  • 使用Statement静态拼接 SQL
  • 未过滤特殊字符:' " or and -- #
  • 直接接收前端参数拼语句

5. 防御手段(重点)

  1. 优先使用 PreparedStatement 预编译对象(最有效) 预编译 SQL 结构固定,参数仅做值传递,无法改变语法
  2. 后端过滤非法关键字:or、and、union、delete、drop 等
  3. 开启数据库权限最小化
  4. 前端 + 后端双重参数校验
  5. 使用 ORM 框架:MyBatis、MyBatis-Plus

6. 面试简答

SQL 注入是利用程序直接拼接用户参数构造恶意 SQL,入侵数据库;核心防御用预编译 PreparedStatement,杜绝字符串拼接 SQL。

如何防止SQL注入攻击

  1. 使用 PreparedStatement 预编译对象(最核心) SQL 语句提前编译,参数单独传入,无法篡改 SQL 结构,彻底杜绝注入。

  2. 杜绝字符串拼接 SQL 不要直接把用户输入拼进 SQL 语句。

  3. 参数统一使用占位符?占位传参,不用 ${} 拼接。

  4. 后端严格校验过滤 过滤 ' " or and union delete drop 等恶意关键字与特殊符号。

  5. 权限最小化 数据库账号只给业务必需权限,禁止删库删表等高权限。

  6. 使用框架 MyBatis、MyBatis-Plus、JPA 等 ORM 框架自带防注入。

  7. 关闭数据库错误详情输出 避免报错泄露表名、字段名。

  8. 前端做输入长度、格式限制 前后端双重校验。

面试最简答案 优先使用PreparedStatement 预编译,采用占位符传参,禁止拼接 SQL,后端过滤非法字符,搭配 ORM 框架、缩小数据库权限,即可有效防止 SQL 注入。

计算机网络传输层有哪些协议?分别适用于什么场景?

一、两大核心协议

  1. TCP 传输控制协议
  2. UDP 用户数据报协议

二、TCP 特点 + 适用场景

特点

  • 面向连接,先建立连接再传输
  • 可靠传输:确认应答、重传、排序、流量控制、拥塞控制
  • 有序、无丢失、无重复
  • 速度慢,开销大

适用场景(必须可靠)

  • 网页浏览 HTTP/HTTPS
  • 文件传输 FTP
  • 邮件 SMTP/POP3
  • 远程登录 SSH/Telnet
  • 数据库连接、聊天文件发送

三、UDP 特点 + 适用场景

特点

  • 无连接,直接发数据,不用建立连接
  • 不可靠:不重传、不确认、丢包不管
  • 速度快、延迟低、开销小

适用场景(追求速度,可丢少量包)

  • 视频通话、直播
  • 网络游戏
  • 语音通话
  • 视频播放
  • DNS 域名解析
  • 广播、群发
相关推荐
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_62:(HTML调试与常见错误修复指南)
java·前端·javascript·ui·html·媒体
霸道流氓气质2 小时前
Spring AI + Ollama 深度实战:从 RAG 问答到 Graph Agent 全流程指南
java·人工智能·spring
木井巳2 小时前
【递归算法】不同路径Ⅲ
java·算法·leetcode·深度优先
lsx2024062 小时前
Ruby 注释
开发语言
Hunter_pcx2 小时前
ubuntu:内存假泄漏
linux·运维·服务器·开发语言·c++·人工智能·ubuntu
想带你从多云到转晴2 小时前
07、数据结构与算法---优先级队列(堆)与排序
java·数据结构·算法
用户298698530142 小时前
Java 实现两个 Word 文档的差异比对
java·后端
三品吉他手会点灯2 小时前
C语言学习笔记 - 36.数据类型 - 为什么需要输出控制符
c语言·开发语言·笔记·学习
吃好睡好便好2 小时前
在Matlab中绘制非默认峰值图
开发语言·学习·算法·matlab