相关疑难解决方法(0)

此代码是否会阻止SQL注入?

背景

我已经签约分析现有的数据提供者,我知道以下代码有问题; 但是为了指出它有多糟糕,我需要证明它易受SQL注入的影响.

什么"Key"参数可以破坏PrepareString函数并允许我执行DROP语句?

代码片段

Public Shared Function GetRecord(ByVal Key As String) As Record
    Dim Sql As New StringBuilder()

    With Sql
        .Append("SELECT * FROM TableName")
        If String.IsNullOrEmpty(Agency) Then
            .Append(" ORDER BY DateAdded")
        Else
            .Append(" WHERE Key = '")
            .Append(PrepareString(Key))
            .Append("'")
        End If
    End With

    Return ExecuteQuery(Sql.ToString())
End Function

Public Shared Function PrepareString(ByVal Value As String) As String
    Return Value.Replace("''", "'") _
                .Replace("'", "''") _
                .Replace("`", "''") _
                .Replace("´", "''") _
                .Replace("--", "")
End Function
Run Code Online (Sandbox Code Playgroud)

.net sql vb.net sql-server sql-injection

16
推荐指数
2
解决办法
8794
查看次数

标签 统计

.net ×1

sql ×1

sql-injection ×1

sql-server ×1

vb.net ×1