您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何创建参数化的SQL查询?我为什么要?

如何创建参数化的SQL查询?我为什么要?

您的EXEC示例将不会被参数化。您需要参数化的查询(有些情况下是准备好的语句),以防止类似这样的输入引起损坏:

’; DROP TABLE栏;-

尝试将其放在您的fuz变量中(如果您重视bar表,则不要这样做)。更细微和破坏性的查询也是可能的。

这是有关如何使用sql Server执行参数的示例:

Public Function GetBarFooByBaz(ByVal Baz As String) As String
    Dim sql As String = "SELECT foo FROM bar WHERE baz= @Baz"

    Using cn As New sqlConnection("Your connection string here"), _
        cmd As New sqlCommand(sql, cn)

        cmd.Parameters.Add("@Baz", sqlDbType.VarChar, 50).Value = Baz
        Return cmd.ExecuteScalar().ToString()
    End Using
End Function

存储过程有时可以防止sql注入。但是,大多数时候您仍然必须使用查询参数来调用它们,否则它们将无济于事。如果 使用存储过程,则可以关闭应用程序用户帐户的SELECT,UPDATE,ALTER,CREATE,DELETE等权限(除了EXEC之外,几乎所有其他权限),并以此方式获得一些保护。

SQLServer 2022/1/1 18:51:13 有472人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶