【问题标题】:Incorrect password in SQL injectionSQL注入密码错误
【发布时间】:2022-01-15 10:15:56
【问题描述】:

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

[SQL 错误图片]

【问题讨论】:

  • 您使用的是 MySQL 还是 SQL Server?它们是完全不同的产品。由于您使用的是 SqlClient,因此您的错误提示 SQL Server,但是在使用 MySQL 后端时,很多时候会错误地使用它。请编辑您的标签以反映您实际使用的内容。
  • 如果您正确地参数化您的查询,这将不是问题。您收到此错误的事实表明您查询数据库的方式存在重大问题。停止将字符串组合在一起并执行它们。阅读、理解并开始使用参数化查询。
  • 如果您存储纯文本密码,我也不会感到惊讶;任何应用程序中的另一个致命缺陷。
  • “在密码中输入相同的查询”是什么意思?请出示您的代码

标签: sql asp.net sql-server sql-injection


【解决方案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 用户具有受限权限(不能删除或截断表,并且只能访问该数据库)

【讨论】:

    猜你喜欢
    • 2018-05-27
    • 2014-07-08
    • 1970-01-01
    • 2016-05-08
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2016-02-09
    相关资源
    最近更新 更多