參數化查詢:針對 SQL 注入的強大防禦
SQL 注入仍然是一種普遍的威脅,能夠危及資料庫安全。 參數化查詢透過將使用者提供的資料與 SQL 程式碼本身分開來提供高效的解決方案。這可以防止惡意程式碼被執行,從而保護您的資料庫。
建構參數化查詢
考慮這個易受攻擊的查詢:
<code class="language-sql">"SELECT foo FROM bar WHERE baz = '" & fuz & "'"</code>
這很容易受到 SQL 注入的影響。 使用參數的更安全的替代方案是:
<code class="language-vbscript">WITH command .Parameters.Count = 1 .Parameters.Item(0).ParameterName = "@baz" .Parameters.Item(0).Value = fuz END WITH</code>
在 SQL Server 中,參數化如下圖所示:
<code class="language-sql">DIM sql AS STRING = "SELECT foo FROM bar WHERE baz= @Baz" USING cn AS NEW SqlConnection("YOUR CONNECTION STRING"), _ cmd AS NEW SqlCommand(sql, cn) cmd.Parameters.Add("@Baz", SqlDbType.VarChar, 50).Value = baz RETURN cmd.ExecuteScalar().ToString() END USING</code>
安全以外的優勢
好處不只限於安全性:
預存程序與參數化:組合方法
雖然預存程序提供了一些安全優勢,但它們並不能取代參數化查詢。 呼叫預存程序時仍必須使用參數,以防止注入漏洞。
一致使用參數化查詢對於強大的應用程式安全性、提高效能和增強程式碼品質至關重要。
以上是參數化查詢如何防範 SQL 注入攻擊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!