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

莆田市荔城区建设局网站wordpress 注入

莆田市荔城区建设局网站,wordpress 注入,莱芜金点子网站,网站策划内容#{}:预编译SQL。 ${}: 即时SQL。 当用户发送一条SQL语句给服务器后,大致流程如下: 1.解析SQL语句的语法和语义,校验SQL语句是否正确。 2.优化SQL语句,制定执行计划。 3.编译SQL语句。 4.执行SQL并返回结果。 一…

#{}:预编译SQL。

${}: 即时SQL。

当用户发送一条SQL语句给服务器后,大致流程如下:

1.解析SQL语句的语法和语义,校验SQL语句是否正确。

2.优化SQL语句,制定执行计划。

3.编译SQL语句。

4.执行SQL并返回结果。

一个SQL如果是上述流程,我们称之为即时SQL。

#{}的优点:

1.性能更高

在大多数情况下,某一天SQL会被反复执行,或者每次执行只是个别的值不同,如果每次都要将上述几步全部走完,效率就会比较低。

预编译SQL就是编译一次之后就会将编译后的SQL语句缓存起来(不执行1,2,3步了),后面再次执行这条SQL语句时,就不会再次编译,从而提高了性能。

*2.更安全(防止SQL注入)

这是#{}最主要的一个优点。

SQL注入:是通过操作输入的数据来修改事先定义好的SQL语句,以达到执行代码对服务器进行攻击的方法。

关于SQL注入,首先需要明白的是${}是将参数直接拼接到SQL语句后的,也就是没有“”,而#{}是在执行 SQL 时,MyBatis 会把#{}替换成?,再使用预编译语句(PreparedStatement)给?赋值。这样能有效防止 SQL 注入攻击,因为参数会被当作一个整体来处理,会自动对特殊字符进行转义。

例如:使用#{}时

<select id="queryUserByusername" resultType="com.example.mybatisxml.Model.UserInfo">select id,age,username,password from user_info by #{username}</select>

实际上执行的是:

SELECT * FROM user——info WHERE username = ?

然后再将输入的参数赋值给?

使用${}时:

<select id="queryUserByusername" resultType="com.example.mybatisxml.Model.UserInfo">select id,age,username,password from user_info where username = ${username}</select>

输入参数“zhangsan”,运行结果报错,其中一句提示是这样的:

可以看出${}是将zhangsan直接拼接到了 = 的后面,这也意味着可以通过写“‘’;drop database****;”这类语句来攻击服务器,因为服务器会将后面的drop database ****;识别为一句SQL语句。

${}应用的场景:

1.排序功能

对于SQL语句:select id, username from user_info order by id #{sort}.

List<UserInfo> queryUserBySort(String sort)

如果我们传入参数“asc”,IDEA就会报错,因为#{sort}会给asc自动添加引号,从而导致SQL错误。(因为参数类型为String,会自动加上引号)。

除此之外,如果将表名作为参数时,也会加上引号。

2.like查询

如果使用#{}:

 <select id="queryUserlike" resultType="com.example.mybatisxml.Model.UserInfo">select id,age,username,password from user_info where username like '%#{username}%'</select>List<UserInfo> queryUserlike(String username);

会报个这样的错误:

但是使用${}的话,则正常运行:

但是MySql内置了一个函数concat()来处理:

 <select id="queryUserlike2" resultType="com.example.mybatisxml.Model.UserInfo">select id,age,username,password from user_info where username like concat('%',    #{username},'%')</select>List<UserInfo> queryUserlike2(String username);

运行结果:


总结来说,当参数类型为String且不需要‘’的时候,使用${},不过需要注意SQL注入问题。


文章转载自:

http://jZylJ8qT.cbqqz.cn
http://cqQl86nZ.cbqqz.cn
http://WdviBtCi.cbqqz.cn
http://TawDu5wm.cbqqz.cn
http://0qLodQ5s.cbqqz.cn
http://mNgdpKYa.cbqqz.cn
http://7Wf4GwzD.cbqqz.cn
http://kSdOU5Qq.cbqqz.cn
http://lZpSv3Zz.cbqqz.cn
http://KSCmd2zB.cbqqz.cn
http://Rtb6eqsr.cbqqz.cn
http://pZKKQKNs.cbqqz.cn
http://3uUB4IDe.cbqqz.cn
http://3ppaSZ6G.cbqqz.cn
http://o47MU4Ch.cbqqz.cn
http://juDlXjme.cbqqz.cn
http://52KHA1G9.cbqqz.cn
http://CuQusxcE.cbqqz.cn
http://qxAjOiks.cbqqz.cn
http://jYJB6PEH.cbqqz.cn
http://X559BE2e.cbqqz.cn
http://wnhAqtLa.cbqqz.cn
http://dL1kDquf.cbqqz.cn
http://gfvyckGn.cbqqz.cn
http://RcKnV8PF.cbqqz.cn
http://k6lNRcM3.cbqqz.cn
http://4uIqPo1h.cbqqz.cn
http://N7h8Ihzy.cbqqz.cn
http://atHHolD6.cbqqz.cn
http://b4VcDmmX.cbqqz.cn
http://www.dtcms.com/wzjs/779592.html

相关文章:

  • 建设局网站打不开是什么原因自己做视频网站有点卡
  • js音乐网站模板wordpress怎么上传插件
  • 山东三强建设咨询有限公司网站中国建设工程网站投标
  • 广西住房和城乡建设局官网北京网站优化公司 卓立海创
  • 在网站做专题上海百度seo网站优化
  • 深圳企业网站建设开发费用邓州建网站
  • 商业性质网站设计做网站用什么空间
  • 中英网站模板 照明做免费导航网站
  • 南京网站设计个人网络推广常见的方法
  • 免费域名申请网站空间网站运营管理的内容有哪些
  • 做论坛网站多少钱高密做网站哪家强价位
  • 黑彩网站开发大连设计网站的公司
  • 织梦网站如何修改数据库配置做app需要什么技术
  • 网站建设与管理赚钱吗做外贸网站一般多少钱
  • 网络空间 网站 域名古镇免费网站建设
  • 网站建设综合案例设计图片素材网站有哪些
  • 专项培训网站建设方案动易的网站能否静态
  • 哪个网站可以免费做国外网站企业网站404页面设计
  • 同一个空间可以做两个网站么上海专业的网站建设公司排名
  • 响应式 企业网站商城网页
  • 做网站网页的人是不是思维页面设计
  • 更改了网站关键词后要怎么做小程序制作公司排行
  • 网站介绍怎么写大连做网站好的公司
  • 我的网站怎么不能搜索怎么制作游戏需要什么软件
  • 企业做网站便宜网站建设如果没有源代码
  • 深圳外贸网站制作公司主页模板
  • 做国外服务器网站吗微信推广方式都有哪些
  • 做电商讲师课程的网站建筑工程网络教育自我鉴定
  • 长沙网站建设及推广公司建模培训
  • 漳州模板网站建设网站怎么做微信扫描登录网站