[C#] 檢查 Sql Injection 非法字元


Posted by mike-hsieh on 2023-11-16

在一些舊專案中,可能有些Sql仍然使用字串相加或是插值語法,這確實會造成不小的隱憂,如果沒有辦法改為參數化,那盡可能提升安全性的方式就是去檢查輸入的字串,以下紀錄。

/// <summary>
/// 檢查SQL非法字元
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public bool IsSafeSqlString(string input)
{
    string[] riskTokens = new string[] { "--", ";--", ";", "/*", "*/", "@@",
                                 "@", "char", "nchar", "varchar", "nvarchar",
                                 "alter", "begin", "cast", "create", "cursor",
                                 "declare", "delete", "drop", "end", "exec",
                                 "execute", "fetch", "insert", "kill", "select",
                                 "sys", "sysobjects", "syscolumns", "table",
                                 "update" };

    foreach (var token in riskTokens)
    {
        if (input?.ToLower()?.IndexOf(token, StringComparison.OrdinalIgnoreCase) != -1)
            return false;
    }

    return true;
}









Related Posts

gitHub 的 SSH key 設定

gitHub 的 SSH key 設定

[TensorFlow Certification Day6] 第二張上課證照入手

[TensorFlow Certification Day6] 第二張上課證照入手

滲透測試基本技術 第三章 (001)

滲透測試基本技術 第三章 (001)


Comments