sql注入
发布日期:2021-06-28 18:42:10
浏览次数:3
分类:技术文章
本文共 729 字,大约阅读时间需要 2 分钟。
1、假如有一个系统,需要输入用户名和密码进行登录,那么这个系统的后台肯定有一条sql,这个sql的逻辑是根据用户名和密码去 查询有没有这个用户,如果有,就登录成功,如果没有,就登录失败
2、假如这个sql是这样的:select * from user where username=? and password=?
?是变量,就是要输入的用户名和密码
3、预编译:预编译就是在将变量替换成输入的值之前,就编译好这条sql,sql编译之后结构就固定了
4、假如用户真实的用户名和密码分别是(zhangsan,123456)
5、sql注入:这条带变量的sql不进行预编译,那么sql的结构不固定,假如黑客知道zhangsan这个用户名不知道密码,但是他输入 的密码是(123 or 1=1),or这个关键字就改变了这条sql的结构,那么这条带变量的sql替换之后就成了这个样子(select * from user where username=zhangsan and password=123 or 1=1),那么即使密码输入错误,这条sql仍能查出结果(因为最后的or 1=1能保证一定查出结果,不信去数据库运行看看),黑客恶意登录就成功,这就是sql注入6、防sql注入:对sql进行预编译,sql一旦结构固定,那么即使sql长这样(select * from user where username=zhangsan and password=123 or 1=1),咱们的数据库只会把密码当成123 or 1=1,这个密码肯定是不对的,那登录肯定失败,预编译就成功防止了sql注入
7、至于如何对sql预编译,各种编程语言(比如java)都有实现转载地址:https://blog.csdn.net/xl_1803/article/details/103381678 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月29日 16时09分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【基础+实战】JVM原理及优化系列之一:JVM体系结构
2019-04-29
【基础+实战】JVM原理及优化系列之二:JVM内存管理
2019-04-29
【基础+实战】JVM原理及优化系列之三:JVM垃圾收集器
2019-04-29
【基础+实战】JVM原理及优化系列之四:JVM参数说明
2019-04-29
【基础+实战】JVM原理及优化系列之五:JVM默认设置
2019-04-29
【基础+实战】JVM原理及优化系列之六:JVM主要调优参数
2019-04-29
【基础+实战】JVM原理及优化系列之十:JVM内存泄漏专题实战
2019-04-29
Redis高可用架构 (redis主从+sentinel)
2019-04-29
【重磅推出】性能提升100倍的性能测试监控优化方法
2019-04-29
Spring cloud微服务框架简介
2019-04-29
【实用】Redis各种存储结构使用场景
2019-04-29
【实用】Redis高级功能
2019-04-29
DevOps八荣八耻了解下,哈哈~
2019-04-29
API Gateway(API网关)介绍
2019-04-29
【免费】少儿编程社区,Scratch中文社区,少儿编程学习交流平台上线~~~
2019-04-29
JavaMail关于使用qq企业邮箱发邮件踩过的坑
2019-04-29
log4j2异步发送error日志邮件配置
2019-04-29
redis setnx解决定时任务多节点部署并发问题(分布式锁)
2019-04-29
spring boot使用redis解决session双机问题
2019-04-29