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语句用拼接实现
相关推荐
考虑考虑10 分钟前
Excel导入时产生特殊字符处理
java·后端·java ee
Scabbards_30 分钟前
面试Leetcode - Heap 堆
java·leetcode·面试
程序员清风1 小时前
专业再升级!程序员专属显示器明基RD280UG上手实测!
java·后端·面试
启雀AI1 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
01_ice2 小时前
MySQL库和表的操作
数据库·mysql
Lam Tang3 小时前
APS 系列文章 08
java·代理模式
Bruce_Liuxiaowei3 小时前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体
萧瑟余晖3 小时前
Java深入解析篇三十三之消息队列
java·开发语言
码匠许师傅4 小时前
【C++ 面试真题】聊聊 C++ 的序列容器
java·c++·面试
这个DBA有点耶4 小时前
从库延迟的“二次放大”效应:一次大事务,拖垮整个读写分离
数据库·mysql·架构