Maison > développement back-end > Golang > Comment puis-je implémenter des clauses ORDER BY dynamiques dans Go avec MySQL pour empêcher l'injection SQL ?

Comment puis-je implémenter des clauses ORDER BY dynamiques dans Go avec MySQL pour empêcher l'injection SQL ?

Barbara Streisand
Libérer: 2024-12-29 05:01:11
original
350 Les gens l'ont consulté

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

ORDER BY dynamique dans Golang avec MySql

Problème :

Difficulté à trier dynamiquement les requêtes résultats en utilisant db.Select() avec espaces réservés.

Analyse :

Contrairement aux paramètres de filtre, les espaces réservés (?) ne peuvent pas être utilisés pour les mots-clés ou identifiants SQL, y compris la clause ORDER BY.

Résolution :

Pour obtenir un ordre dynamique, on peut employer fmt.Sprintf() pour assembler dynamiquement le texte de la requête. Par exemple :

ordCol := "title"

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

Précautions :

Lors de l'assemblage dynamique de requêtes, il est crucial de mettre en œuvre des protections contre l'injection SQL. Cela implique de s'assurer que les valeurs utilisées pour les noms de colonnes respectent des critères spécifiques, tels que l'autorisation uniquement des lettres, chiffres et traits de soulignement anglais :

valid := regexp.MustCompile("^[A-Za-z0-9_]+$")
if !valid.MatchString(ordCol) {
    // Invalid column name, prevent SQL injection
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal