SQL注入中的密码不正确

Incorrect password in SQL injection

提问人:Code stroker 提问时间:12/11/2021 最后编辑:ShadowCode stroker 更新时间:12/11/2021 访问量:413

问:

我在用户名字段中发现了SQL注入,SQL查询为1'or'1'='1'-- - 我已经在图片中提供了这些 如果我在密码中键入相同的查询,它会显示不正确的密码,这是什么原因?

[SQL错误的图片]

1

asp.net SQL-Server SQL-注入

评论

0赞 squillman 12/11/2021
您使用的是 MySQL 还是 SQL Server?它们是完全不同的产品。由于您使用的是 SqlClient,因此您的错误暗示了 SQL Server,但在使用 MySQL 后端时,很多时候会错误地使用该错误。请编辑您的标签以反映您实际使用的内容。
6赞 Sean Lange 12/11/2021
如果正确参数化查询,则不会出现问题。您收到此错误的事实表明您查询数据库的方式存在重大问题。不要再把字符串拼凑在一起并执行它们了。阅读、理解并开始使用参数化查询。
2赞 Thom A 12/11/2021
如果您存储纯文本密码,我也不会感到惊讶;任何应用程序中的另一个致命缺陷。
0赞 ysth 12/11/2021
“在密码中键入相同的查询”是什么意思?请出示您的代码

答:

2赞 JNunez247 12/11/2021 #1

只是谷歌“防止SQL注入”

请记住,每个人

用户名可能来自注册页面。
该错误表示编码实践不佳。在我们开发生涯的某个时刻,我们都对此感到内疚。

您需要遍历网站上的所有查询,并将它们更改为使用参数,而不是连接。

坏 EX:

CommandString = "Select a from b where b.col = " & Variable  

好EX:

Dim command As SqlCommand = new SqlCommand("Select a from b where b.col = @Variable", connection)
command.CommandType = CommandType.Text
command.Parameters.Add(new SqlParameter("@Variable", Variable))

此外,将其设为存储过程也是一个好主意。

此外,请确保站点使用的 SQL 用户具有受限权限(不能删除或截断表,并且只能访问该数据库)