'"+username+"'与"aaa' or '1=1"

'"+username+"'与"aaa' or '1=1"

老师,为什么sql语句中的单引号里还要加双引号,username前后要加+号,我看不懂引号的层叠关系,

http://img1.sycdn.imooc.com//climg/5d414d5c0001ca6c13660768.jpg

为什么要用加号?还有"aaa' or '1=1",为什么左右没有单引号?

http://img1.sycdn.imooc.com//climg/5d414dba00012d9f13660768.jpg

http://img1.sycdn.imooc.com//climg/5d414dcf00012e3a13660768.jpg

正在回答

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

3回答

同学你好,如下部分是用来获取之前定义的用户名,如:

http://img1.sycdn.imooc.com//climg/5d42b35200017def11230075.jpg

这里将aaa' or '1=1替换一下变成如下形式

http://img1.sycdn.imooc.com//climg/5d42b38e0001161711260073.jpg

这里的单引号是和sql语句中的单引号配合,表示用户名是用单引号引起来 。or是sql的关键字,单引号引的是前边的aaa或者后边的1=1,如果不加单引号,表示用户名为aaa or 1=1,是错误的用户名,不会登陆成功。

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

好帮手慕阿满 2019-08-01 14:55:56

同学你好,对login1()方法来说,是在两边加引号,变成'aaa' or '1=1'。如果是login2()方法,是将aaa' or '1=1整体作为一个字符串当成参数传入。

祝:学习愉快~

  • 提问者 天才少年25 #1
    那在这个整体字符串中,两个单引号的作用域是什么?为什么不能直接是aaa or 1=1,加了两个单引号有什么不同吗?
    2019-08-01 15:05:03
  • 提问者 天才少年25 #2
    两个单引号,引的是or,还是其他的?
    2019-08-01 15:09:01
好帮手慕阿满 2019-07-31 18:10:17

同学你好,这里sql是一个String类字符串,所以整体使用双引号引起来了,但是username和password的值需要从外边获取,所以双引号中添加单引号用来获取外边的值,单引号中有双引号是为了匹配之前的双引号,保证获取的变量值不在String字符串之间,这样才能从外边获取。而加号是拼接String字符串和username和password变量。

"aaa' or '1=1"没有加号是因为这里不需要从外边获取值。

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

  • 提问者 天才少年25 #1
    第一个双引号匹配的是第二个双引号,还是最后一个双引号?
    2019-08-01 09:07:24
  • 提问者 天才少年25 #2
    "aaa' or '1=1"是作为字符串类型被传入的,所以会去掉两头的双引号,就变成了:aaa' or '1=1 ,那它会自动在两头补上单引号变成:'aaa' or '1=1'吗?因为sql的语句里,username='XXX'。
    2019-08-01 09:20:18
  • 好帮手慕阿满 回复 提问者 天才少年25 #3
    同学你好,第一个双引号匹配的是第二个双引号。
    2019-08-01 11:05:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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