首頁 > 後端開發 > Golang > 主體

在 Go 中建立 SQL 查詢時如何安全地連接文字和值?

Patricia Arquette
發布: 2024-10-26 15:48:02
原創
445 人瀏覽過

How can I safely concatenate text and values when constructing SQL queries in Go?

在Go SQL 查詢中連接文字和值

在Go 中建立文字SQL 查詢時,連接時需要遵循一定的語法規則字串和值組件,特別是在使用整數時。

在提供的 Python 程式碼中,元組方法在 Go 中無效,嘗試將參數轉換為字串將導致類型不匹配錯誤。

在 Go 中完成此操作的慣用方法是使用 fmt.Sprintf 來格式化查詢字串。這允許您在運行時在字串中嵌入值:

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

這裡,佔位符%d 和%s 分別表示整數和字串值,然後在db.Query 呼叫期間分配這些值:

<code class="go">rows, err := db.Query(query, val1, val2)</code>
登入後複製

此方法可確保值的格式正確並防止SQL 注入漏洞。

避免 SQL 注入

需要注意的是, SQL 查詢中的字串連接可能會導致注入漏洞。為了減輕這種風險,請使用準備好的語句和參數化查詢。透過將值作為參數傳遞,您可以防止惡意輸入修改預期的 SQL 查詢。

例如:

<code class="go">stmt, err := db.Prepare(`SELECT columnA FROM tableA WHERE columnB = ? AND columnB = ?`)
rows, err := stmt.Query(val1, val2)</code>
登入後複製

透過使用準備好的語句,您可以保護您的應用程式免受惡意 SQL 輸入的影響同時保持構造動態查詢的便利性。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!