千家信息网

SQL注入与防止及myBaits基本作用是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关SQL注入与防止及myBaits基本作用是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SQL注入在嵌入式SQL编程中,sq
千家信息网最后更新 2026年11月03日SQL注入与防止及myBaits基本作用是怎样的

这期内容当中小编将会给大家带来有关SQL注入与防止及myBaits基本作用是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

SQL注入

在嵌入式SQL编程中,sql语句通常是以字符串的形式提交给数据库管理系统的。SQL注入是利用SQL语法将一些恶意代码加入到该字符串中,从而获取到非授权的数据。
如:用户登录(假设用户名为admin,密码为 123456),通常使用以下语句进行判断

select * from user where username='admin' and password='123456'

如果获取到记录,则允许登录,否则提示"用户名不存在或密码错误"。加入我并不知道用户密码,知道用户名为"admin",在输入用户名时,将用户名变为 admin'-- ,此时sql语句变为

select * from user where username='admin'-- and password='123456'

则登录成功。如下图密码随意输入,如果没有做任何防止SQL注入的处理,完全可以登录成功

假如:用户名我输入的是"admin;drop table user;-";会发生啥结果?

防止SQL注入的方法

JDBC提供的PreparedStatement可以防止SQL注入;PreparedStatement对sql预编译后,sql语句中的参数需要用?代替。然后调用setXX()方法设置sql语句中的参数。这样再传入特殊值,也不会出现sql注入的问题了,示例代码如下:

String sql="select * from user where username='?'"+" and password='?'";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1,"admin");pstmt.setString(2,"123456");//5、执行语句ResultSet rs=pstmt.executeQuery(sql);

还有另外一种方法,就是把SQL语句写入存储过程,通过存储过程完成查询,同样可以防止SQL注入。

mybaits中${}和#{}的使用

"$ "是拼接符;使用"${} "相当于在高级语言中已经将sql语句进行拼接,而且对于变量是不加引号的,如:用户名为admin,参数变量为 sname

select * from user where username='${sname}'--此种情况下,高级语言交给数据库的SQL语句是select * from user where username='admin'

此种情况下是无法防止SQL注入的。

#{}是占位符;使用"#{} "只能在数据库管理系统中,将#{}中的参数带入

select * from user where username=#{sname}--此种情况下,首先经过预编译形成如下SQL,再将参数带入,此时给参数值带加单引号select * from user where username=?

此种情况下是可以防止SQL注入的

既然#{}能够防止SQL注入,"$ {}"不能,为什么mybaits还要提供这么一个符号?,当然有myBatis的理由,如果SQL语句中数据库对象需要传参进去,那只能使用** ${}**。如查询用户表(user) ,参数变量为tableName='user',代码只能是

select * from ${tableName}//转换为SQL语句为select * from user

在myBatis中变量做为where子句中的参数,一律使用#{},禁止使用" " , 以 防 S Q L 注 入 ; S Q L 语 句 中 包 含 了 数 据 库 对 象 ( 如 表 、 视 图 等 ) 才 能 使 用 " {} ",以防SQL注入;SQL语句中包含了数据库对象(如表、视图等)才能使用" ",以防SQL注入;SQL语句中包含了数据库对象(如表、视图等)才能使用"{} ",因为#{},自动给变量加上引号,如上例:

select * from #{tableName}//转换为SQL语句为select * from 'user'

上述就是小编为大家分享的SQL注入与防止及myBaits基本作用是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

语句 用户 参数 数据 数据库 变量 密码 情况 用户名 登录 代码 对象 引号 方法 输入 作用 高级 成功 内容 字符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网新科技 互联网科技工作委员会副主任毛军 涨乐互联网科技 北京互联网络科技有限公司 狮子座互联网科技有限公司 互联网科技博客 互联网科技有限公司 翻译 中正互联网科技招聘 海南购全球互联网科技 太原新华互联网科技学校怎么样 中国互联网有什么科技含量 汽车互联网创新科技园 互联网和黑科技的看法 互联网对科技的发展 互联网公司高科技产品 伍佰万互联网科技怎么赚钱 半导体行业属于互联网高科技类吗 科技信息时代互联网发展 北京瑞云互联网科技有限公司 知域互联网科技有限公司官网 伟宏互联网科技 圆梦互联网科技 居家互联网科技有限公司 山东吉时兔互联网科技有限公司 注册互联网科技公司经营范围大全 畅思互联网科技 中科明德北京互联网科技 国大互联网教育科技有限公司薪资 上海京穆互联网科技有限公司 互联网科技融合创新
0