查询 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?
下面的代码是否被视为 "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?