我一直在创建一个遗留网站.最近,用户告知我们潜在的安全漏洞.
长话短说,当尝试登录并使用’=”或’作为密码或用户名时,将执行以下查询.
SELECT * FROM `table-goes-here` WHERE `username` = ''=' 'or'' AND `password` = 'some-hash-goes-here'
此查询将选择该表中的所有内容,并允许在没有任何实际有效凭据的情况下登录.
我只是维护网站,我之前已经与业主谈过这样的安全漏洞,他不会听.
我想知道的是这究竟是一个有效的查询以及它究竟做了什么(最好一步一步地向我解释,就像我是5版本一样).我的MysqL知识不是最好的.
我非常清楚这是一个sql注入.我知道如何准备陈述,但他们显然不在预算中.我只是想知道它究竟做了什么.即这一部分.我以前从未见过这种语法,谷歌搜索并没有真正帮助,因为我不知道我在寻找什么.
`username` = ''=' 'or''
解决方法:
事实上你正在奔跑
SELECT * FROM table WHERE (username= '' = '') or ('' AND password="");
和(user_username =”=”)计算结果为true …尝试
SELECT (username= '' = '') FROM table;
和(”AND password =“”)也评估为真…尝试
Select ('' AND password="") FROM table;
也评估为真所以……一切都显示出来