Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstellt man sicher Text-SQL-Abfragen in Go?

Wie erstellt man sicher Text-SQL-Abfragen in Go?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 21:26:29340Durchsuche

 How to Safely Construct Text SQL Queries in Go?

Korrekte Methode zum Erstellen von Text-SQL-Abfragen in Go

Beim Schreiben von Text-SQL-Abfragen in Go können beim Verketten von Zeichenfolgenteilen mit Werten Probleme auftreten. Herkömmliche Methoden, wie die Verwendung der Platzhalter %d und %s innerhalb einer Zeichenfolge, können zu Syntaxfehlern oder Typkonflikten führen.

Verkettung im Python-Stil

In Python Sie können Zeichenfolgen und Werte mit %-Operatoren innerhalb von Zeichenfolgen in drei Anführungszeichen verketten. Dieser Ansatz wird jedoch in Go nicht unterstützt.

Go-Äquivalent

Um eine ähnliche Verkettung in Go zu erreichen, können Sie die Funktion fmt.Sprintf verwenden. Es benötigt ein Zeichenfolgenformat als erstes Argument und zusätzliche Argumente für die Platzhalter:

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

Verhindern von Injektionsschwachstellen

Beim Verketten von Werten in Abfragen ist es wichtig, dies zu vermeiden Sicherheitslücken bei der Injektion. Anstatt Platzhalter in Zeichenfolgen zu verwenden, sollten Sie vorbereitete Anweisungen verwenden:

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

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

Hier ? Platzhalter stellen die Werte dar und val1 und val2 werden als Argumente an db.Query übergeben. Diese Methode gewährleistet die Abfragesicherheit und verhindert, dass böswillige Eingaben die Datenbank beeinträchtigen.

Das obige ist der detaillierte Inhalt vonWie erstellt man sicher Text-SQL-Abfragen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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