Java学习 - MySQL安全(防注入)

SQL注入

  • SQL注入是什么

    mysql 复制代码
    网络上存在场景:用户填写表单或url,发送查询给服务端,服务端根据用户传入的数据,执行SQL代码 
    
    SQL注入:用户故意传入恶意数据,使服务端执行恶意代码
  • SQL注入例子

    mysql 复制代码
    有后端代码
    
    SELECT COUNT(*)
    FROM Login
    WHERE user_name=`'` + userName + `'` AND password=`'` + password + `'`;
    
    其中userName和password为用户填写的数据
    
    如果用户传入
    账号:admin';-
    密码:随便
    
    则SQL语句拼接后为
    SELECT COUNT(*)
    FROM Login
    WHERE user_name='admin';-'` AND password=`'` + password + `'`;
    
    则后面密码验证部分被成为注释的一部分,即只要有这个用户名,就算查询成功,而不需要检验密码
  • 防止SQL注入方法

    • 避免SQL语句用拼接实现
相关推荐
传奇开心果编程5 小时前
【Rust入门知识点学与练】第3课:String 与 &str 的区别
开发语言·学习·rust
秋名RG6 小时前
Java 核心特性一览
java·开发语言
霸道流氓气质6 小时前
Spring AI 技术细节:RAG QuestionAnswerAdvisor 设计与实现
java·人工智能·spring
斑马1396 小时前
Linux软件编程学习笔记(十二)——TCP并发服务器模型
java·服务器·网络
冬栈程序设计6 小时前
Springboot宿舍管理系统【670099】 -附源码(开箱即用)
java·毕业设计·springboot·课程设计·程序设计·大作业
2601_962284506 小时前
北京Java全栈开发培训 Web前端开发 软件测试就业培训班
java·软件测试·web前端·全栈开发·就业培训
小雨笙笙6 小时前
机器学习:线性回归学习
学习·机器学习·线性回归
HugoStudio_SWAN7 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
qiaosaifei7 小时前
JAVA老项目中有大量的类名_编译时报找不到符号错误
java·开发语言
聪明蛋子哟7 小时前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python