簡體   English   中英

插入帶有SQL注入安全參數的DB?

[英]Inserting into DB with parameters safe from SQL injection?

我一直在閱讀有關SQL注入的內容,我想確保我的代碼可以說是“安全”,我打算使用RegExp驗證器來檢查用戶輸入,但是這里的另一個帖子建議只使用參數化查詢,我我正在使用它們,但我想確保我的代碼是安全的,是嗎?

        using ( SqlConnection dataConnection = new SqlConnection(myConnectionString) )
        {
            using ( SqlCommand dataCommand = dataConnection.CreateCommand() )
            {
                dataCommand.CommandText = "INSERT INTO Lines (Name, CreationTime) " +
                    "VALUES (@LineName, @CurrentDateTime)";

                dataCommand.Parameters.AddWithValue("@LineName", TextBox2.Text);
                dataCommand.Parameters.AddWithValue("@CurrentDateTime", DateTime.Now.ToString());
                dataConnection.Open();
                //do other DB stuff

我打破了最后一部分以使帖子更短,其余部分只是嘗試捕獲異常並關閉數據庫連接以及提供用戶關於插入成功的反饋。

您的代碼很好,它可以防止注入,因為值是作為參數而不是字符串文字傳遞的。 但是,如果您自己編寫此類數據訪問,是否考慮過創建SqlParameter對象並顯式設置類型,大小等,並將參數添加到命令中? AddWithValue可以正常工作,但SQL Server必須確定類型,一點點,但不必要的開銷。

好吧,你總是可以嘗試在文本框中注入一個SQL語句,這可能會給你一個更快,更明確的答案。

是的,這是相當安全的。 只要你不使用預准備語句中的“已清理”變量來生成動態sql,你通常都可以。 您正在使用預准備語句的事實將處理轉義字符和其他簡單的注入方法。

我不會放棄任何其他驗證...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM