or与--不懂

or与--不懂

JDBCDemo4.login("aaa' or '1-1","efrfref");

JDBCDemo4.login("aaa' --","efrfref");

select * from user where username = '"+username+"' and password = '"+password+"';

为什么上面两条能执行,并且成功?


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

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

1回答
好帮手慕小班 2020-07-01 19:08:58

同学你好,1、MySQL中 -- 表示注释。

    2、在sql语句中,将 aaa' or '1=1 拼接后就是

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

如上所示,or在sql中表示的意思就是其中一个条件满足都是可以得出结果的意思,而对应1=1是永远成立的,所以,这个语句就是恒成立的,后面的密码是否正确已经不重要了,因为这条语句已经可以正常执行了,查询到这条数据。

    3、在sql语句中,将 aaa' -- 拼接后就是

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

如上所示,--表示注释,username=aaa之后的内容不执行了,这要语句也是可以正常执行,查询到这条数据。

所以将这两个内容拼接到sql语句后,这条语句是可以正常执行,查询到这条数据。

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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