欢迎来到站长天空!

其它数据库

当前位置: 主页 > 数据库 > 其它数据库

mysql中 ${param}与#{param}使用区别

时间:2025-12-10 09:00:03|栏目:其它数据库|点击:

${param}传递的参数会被当成sql语句中的一部分,比如传递表名,字段名

例子:(传入值为id)

order by ${param} 

则解析成的sql为:

order by id

#{parm}传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

例子:(传入值为id)

select * from table where name = #{param}

则解析成的sql为:

select * from table where name = "id"

为了安全,能用#的地方就用#方式传参,这样可以有效的防止sql注入攻击

sql注入简介

直接上了百度的例子,感觉一看就清晰明了

某个网站的登录验证的SQL查询代码为:

strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"

恶意填入
userName = "1' OR '1'='1";与passWord = "1' OR '1'='1";时,将导致原本的SQL字符串被填为
strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1'); "
也就是实际上运行的SQL命令会变成下面这样的strSQL = "SELECT * FROM users;"

这样在后台帐号验证的时候巧妙地绕过了检验,达到无账号密码,亦可登录网站。所以SQL注入攻击被俗称为黑客的填空游戏。

到此这篇关于mysql中 ${param}与#{param}使用区别的文章就介绍到这了,更多相关mysql中 ${param}与#{param}区别内容请搜索免费资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持免费资源网!

上一篇:MySql COALESCE函数使用方法代码案例

栏    目:其它数据库

下一篇:Mysql之组合索引方法详解

本文标题:mysql中 ${param}与#{param}使用区别

本文地址:https://zz.feitang.co/shujuku/29811.html

广告投放 | 联系我们 | 版权申明

申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:257218569 | 邮箱:257218569@qq.com

Copyright © 2018-2026 站长天空 版权所有 Powered by EyouCms冀ICP备14023439号