首頁 >後端開發 >Golang >如何在 MySQL 中實作 Go 中的動態 ORDER BY 子句來防止 SQL 注入?

如何在 MySQL 中實作 Go 中的動態 ORDER BY 子句來防止 SQL 注入?

Barbara Streisand
Barbara Streisand原創
2024-12-29 05:01:11305瀏覽

How Can I Implement Dynamic ORDER BY Clauses in Go with MySQL to Prevent SQL Injection?

Golang 中使用MySql 進行動態ORDER BY

問題:

問題:

問題:

分析:

與過濾器參數不同,佔位符(?)不能用於 SQL 關鍵字或識別符,包括 ORDER BY 子句。

ordCol := "title"

qtext := fmt.Sprintf("SELECT * FROM Apps ORDER BY %s DESC", ordCol)
rows, err := db.Query(qtext)

解:

要實現動態排序,可以使用 fmt.Sprintf() 動態組合查詢文字。例如:

valid := regexp.MustCompile("^[A-Za-z0-9_]+$")
if !valid.MatchString(ordCol) {
    // Invalid column name, prevent SQL injection
}
注意事項:動態組裝查詢時,實施針對 SQL 注入的保護措施至關重要。這涉及確保用於列名稱的值符合特定標準,例如僅允許使用英文字母、數字和下劃線:

以上是如何在 MySQL 中實作 Go 中的動態 ORDER BY 子句來防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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