Heim > Backend-Entwicklung > Golang > Wie kann ich dynamische ORDER BY-Klauseln in Go mit MySQL implementieren, um SQL-Injection zu verhindern?

Wie kann ich dynamische ORDER BY-Klauseln in Go mit MySQL implementieren, um SQL-Injection zu verhindern?

Barbara Streisand
Freigeben: 2024-12-29 05:01:11
Original
272 Leute haben es durchsucht

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

Dynamisches ORDER BY in Golang mit MySql

Problem:

Schwierigkeit beim dynamischen Sortieren der Abfrage Ergebnisse mit db.Select() mit Platzhalter.

Analyse:

Im Gegensatz zu Filterparametern können Platzhalter (?) nicht für SQL-Schlüsselwörter oder Bezeichner verwendet werden, einschließlich der ORDER BY-Klausel.

Auflösung:

Um eine dynamische Ordnung zu erreichen, kann man Folgendes verwenden fmt.Sprintf(), um den Abfragetext dynamisch zusammenzustellen. Zum Beispiel:

ordCol := "title"

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

Vorsichtsmaßnahmen:

Beim dynamischen Zusammenstellen von Abfragen ist es wichtig, Schutzmaßnahmen gegen SQL-Injection zu implementieren. Dabei muss sichergestellt werden, dass die für Spaltennamen verwendeten Werte bestimmten Kriterien entsprechen, z. B. dass nur englische Buchstaben, Ziffern und Unterstriche zulässig sind:

valid := regexp.MustCompile("^[A-Za-z0-9_]+$")
if !valid.MatchString(ordCol) {
    // Invalid column name, prevent SQL injection
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich dynamische ORDER BY-Klauseln in Go mit MySQL implementieren, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage