这两句有什么区别

这两句有什么区别

#sql = "select count(*) from t_user where username =" + username+ " and aes_decrypt(unhex(password),'HelloWorld')="+password
sql = "select count(*) from t_user where username = username  and aes_decrypt(unhex(password),'HelloWorld')= password"

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
慕之熠_灿烈 2019-10-16 11:30:47

同学,你好。

第一个sql语句是以字符串拼接的形式将username和password两个变量拼接到了原始的sql语句中,实现了将username和password两个变量的值赋给原始字符串中的username和password字段。

第二个sql语句就是表示一个完整的sql字符串,内容为:select count(*) from t_user where username = username  and aes_decrypt(unhex(password),'HelloWorld')= password。

如果我的回答解决了您的疑惑,请采纳!祝~学习愉快~

  • 第一个SQL语句,跳过了预编译机制执行,易于被注入攻击? 第二个SQL语句,必须通过预编译机制后执行,防止了注入攻击? 是这么个意思?
    2019-10-18 18:25:09
  • 同学的理解有所偏差,预防SQL注入需要将传入的值进行参数话处理,也就是在sql语句中将待传入的值先使用占位符占位,等到sql语句被执行时将占位符所表示的具体值传入,此时所传入的值只会被当做数据库中的某一条记录的值,而不会再经过解析器进行编译,从而有效的预防了SQL注入攻击。 问题中你所书写的两个sql语句,第一个是以参数形式向sql语句中传入了值;第二个就是一个普通的sql字符串语句。两种语句都没有涉及到避免sql注入的内容。 或你可再观看该小节对应的内容,进一步理解关于sql注入的相关知识。
    2019-10-21 10:08:14
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师