查询 sql 数据库的函数的安全性

security of a function that queries a sql database

下面的代码是否被视为 "secure"?

Public Function GetManager(ByVal uname As String) As String
    Dim strSelect = String.Format("SELECT UserName FROM aspnet_Users INNER JOIN Hierarchy ON UserId = LineManagerID WHERE StaffID = (SELECT UserId FROM aspnet_Users WHERE UserName = '{0}')", uname)
    Dim cmdCommand = New SqlCommand(strSelect, _connection)
    GetManager = cmdCommand.ExecuteScalar()
End Function

我正在专门看这部分..

 where UserName = {'0'}, uname

我说撇号让我容易受到一些潜在的脚本攻击,我说得对吗?

非常感谢。

DS

不,它不安全。您的 uname 参数将被插入到 SQL 命令的字符串中。 恶意用户可以发送任何与您的 sql.

混淆的字符串

最好的办法是使用参数化查询:How do I create a parameterized SQL query? Why Should I?