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

时间:2015-01-31 10:57:16

标签: sql vb.net security

下面的代码是否会被考虑"安全"?

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

1 个答案:

答案 0 :(得分:2)

不,它不安全。您的uname-parameter将插入到SQL命令的字符串中。 邪恶的用户可以发送任何与你的SQL混淆的字符串。

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