首頁  >  文章  >  後端開發  >  如何在 Go 中安全地建構文字 SQL 查詢?

如何在 Go 中安全地建構文字 SQL 查詢?

Susan Sarandon
Susan Sarandon原創
2024-10-31 21:26:29235瀏覽

 How to Safely Construct Text SQL Queries in Go?

在Go 中建立文字SQL 查詢的正確方法

在Go 中編寫文字SQL 查詢時,在將字串部分與值連接時可能會遇到問題。傳統方法,例如在字串中使用 %d 和 %s 佔位符,可能會導致語法錯誤或類型不符。

Python 樣式連接

在 Python 中,您可以在三引號字串中使用 % 運算子連接字串和值。但是,Go 中不支援這種方法。

Go 等效

要在 Go 中實現類似的串聯,可以使用 fmt.Sprintf 函數。它採用字串格式作為第一個參數和占位符的附加參數:

<code class="go">query := fmt.Sprintf(`SELECT columnA FROM tableA WHERE columnB = %d AND columnC = %s`,
                     someNumber, someString)</code>

防止注入漏洞

將值連接到查詢時,避免這一點至關重要注入漏洞。不要在字串中使用佔位符,而是考慮使用準備好的語句:

<code class="go">query := `SELECT columnA FROM tableA WHERE columnB = ? AND columnC = ?`

rows, err := db.Query(query, val1, val2)</code>

Here, ?佔位符代表值,val1 和 val2 作為參數傳遞給 db.Query。這種方法保證了查詢安全,防止惡意輸入影響資料庫。

以上是如何在 Go 中安全地建構文字 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn