当前位置: 首页 > news >正文

程序员自己做网站赚钱男人网址你懂我意思正能量

程序员自己做网站赚钱,男人网址你懂我意思正能量,wordpress搭建表格,地推项目对接平台目录 MyBatis传参占位符区别 不能直接用#{}的情况 in多参数值查询 like %%模糊查询 order by列名参数化 MyBatis传参占位符区别 在 MyBatis 中#xff0c;#{} 和 ${} 都是用于传参的占位符#xff0c;但它们之间有很大的区别#xff0c;主要体现在两个方面#xff1a…目录 MyBatis传参占位符区别 不能直接用#{}的情况 in多参数值查询 like %%模糊查询 order by列名参数化 MyBatis传参占位符区别 在 MyBatis 中#{} 和 ${} 都是用于传参的占位符但它们之间有很大的区别主要体现在两个方面参数值的类型和 SQL 注入问题。 1.参数值的类型 ①  #{} 是预编译参数表示使用 PreparedStatement 时使用 setXXX() 方法设置参数值会对传入的参数进行类型处理确保传递的参数类型正确。一般来说我们在使用 MyBatis 进行 CRUD 操作时都应该使用 #{} 来传递参数这样可以有效地避免 SQL 注入问题。  ②  ${} 是字符串拼接表示在 SQL 语句中直接插入传入的参数值不会对传入的参数类型进行处理。如果传入的参数是字符串类型那么在 SQL 语句中使用时需要使用单引号将其括起来否则会抛出 SQL 语法错误异常。因此在使用 ${} 时需要特别注意避免 SQL 注入问题。 简而言之 如果传入Z3r4y # PrepareStatement ? 填充参数 类型化 转义处理 返回一个Z3r\4y $ Statement 拼接参数 返回一个Z3r4y 2.SQL 注入问题 ①  #{} 可以避免 SQL 注入问题因为它会对传入的参数进行类型处理并将参数值转义后再放到 SQL 语句中保证了 SQL 语句的安全性。  ②  ${} 存在 SQL 注入问题因为 SQL 语句中插入的是传入的参数值如果参数值中包含 SQL 语句的关键字或特殊字符可能会导致 SQL 注入攻击。 举个例子 !-- 使用#不存在漏洞默认都是PREPARED--select idfindUserById resultTypecom.example.mybaits.entity.User statementTypePREPAREDSELECT * FROM tbuser where id #{id}/select!-- 使用$存在注入漏洞 --select idfindUserByName resultTypecom.example.mybaits.entity.UserSELECT * FROM tbuser where userName${username}/select 总结一下原则就是能用#{}就不要用${} 不能直接用#{}的情况 因为一些sql语言的性质一些情况不能直接用#{}传参强制被引号包裹导致sql语义错误 比如下面这种情况 如果直接SELECT * FROM tbuser where id in (#{ids})并传参ids1,2,3就会拼接成 SELECT * FROM tbuser where id in (1,2,3); 从而出现只调出一行的谬误 解决方案如下 in多参数值查询 !-- in查询错误写法 --select idfindUserInIds resultTypecom.example.mybaits.entity.User SELECT * FROM tbuser where id in (${ids})/select!-- in查询正确写法 --select idfindUserInIdsRight resultTypecom.example.mybaits.entity.User SELECT * FROM tbuser where id inforeach collectionlist itemids open( close) separator,#{ids}/foreach/select like %%模糊查询 !-- 模糊查询错误写法 --select idfindUserLikeName resultTypecom.example.mybaits.entity.UserSELECT * FROM tbuser where userName like %${username}%/select!-- 模糊查询正确写法 --select idfindUserLikeName resultTypecom.example.mybaits.entity.UserSELECT * FROM tbuser where userName like concat(%,#{username}, %)/select order by列名参数化 !--动态指定列名排序,有注入漏洞--select idallUserSeq resultTypecom.example.mybaits.entity.UserSELECT *FROM tbuser order by ${colName} /select 基于MyBatis并不能很好解决这种注入漏洞
http://www.pierceye.com/news/795549/

相关文章:

  • 爱看视频的网站政务公开既网站信息化建设会议
  • 做外单什么网站好网站模板下载之后怎么做
  • 网站维护细则微博同步wordpress
  • 网站微商城的建设新网域名备案
  • 网站举报有奖平台北京vi设计公司怎么样
  • Wix做的网站在国内打不开网站开发专业就业好不好
  • php语言做网站网站流量与带宽
  • 网站推广经验做网站职校选什么专业
  • 搜英文关键词网站凯里seo排名优化
  • 哪个网站可以帮忙做简历培训网网站源码
  • 万宁市住房和城乡建设局网站自助建站加盟
  • 创建一个网站需要什么wordpress 支付 api接口
  • 怎么样做免费网站建筑招工找活平台
  • 虚拟机中做网站家政服家政服务网站模板
  • 佛山企业网站建设流程网站开发 前端如何学习
  • 昆明好的网站开发公司宣传视频
  • 深圳网站设计公司网站建设 地址 上海石门二路
  • 广州大型网站建设公司广元网站建设价格
  • 国外做游戏的视频网站有哪些问题百度官网地址
  • wordpress主题外贸网站基础集团网站建设
  • 现货电子交易平台冬镜seo
  • 怎样进入当地建设局网站用py做网站
  • 做网站标配seoul是什么国家
  • 做网站注册哪些商标做网站建设销售
  • 创建网站有免费的吗大庆网络推广
  • 南昌p2p网站建设公司福州seo关键词排名
  • 导航网站链接怎么做建设网站的费用调研
  • 北京营销型网站定制网站开发 建设叫什么
  • 用ps做企业网站分辨率是多少钱百度竞价是什么
  • 九江市建设局官方网站网站支付开发