Maison > base de données > tutoriel mysql > Comment puis-je paramétrer en toute sécurité la clause IN dans les requêtes SQL Android ?

Comment puis-je paramétrer en toute sécurité la clause IN dans les requêtes SQL Android ?

DDD
Libérer: 2025-01-18 17:27:11
original
490 Les gens l'ont consulté

How Can I Safely Parametrize the IN Clause in Android SQL Queries?

Paramétrage sécurisé de la clause IN dans Android SQL

Travailler avec des données dynamiques dans la clause SQL IN d'Android nécessite une manipulation minutieuse pour éviter les vulnérabilités d'injection SQL. Ce guide présente une méthode sécurisée utilisant des espaces réservés.

Utiliser des espaces réservés pour la sécurité

L'approche la plus sûre consiste à créer une chaîne d'espace réservé avec des virgules séparant les points d'interrogation. Le nombre d'espaces réservés correspond directement au nombre de valeurs dans votre clause IN. Cette chaîne est ensuite intégrée à votre requête SQL, protégeant ainsi vos données des attaques par injection.

Exemple pratique

Supposons que vous ayez une fonction makePlaceholders(int len) qui génère cette chaîne d'espace réservé. Cette fonction garantit une chaîne de points d'interrogation correctement formatée, quel que soit le nombre de valeurs. Voici comment il est utilisé :

<code class="language-java">String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")";
Cursor cursor = mDb.rawQuery(query, names);</code>
Copier après la connexion

makePlaceholders Implémentation des fonctions

Une implémentation possible de la fonction makePlaceholders est :

<code class="language-java">String makePlaceholders(int len){
    if (len < 1) {
        throw new IllegalArgumentException("Length must be at least 1");
    } else if (len == 1) {
        return "?";
    } else {
        StringBuilder sb = new StringBuilder(len * 2).append("?");
        for (int i = 1; i < len; i++) {
            sb.append(",?");
        }
        return sb.toString();
    }
}</code>
Copier après la connexion

Cela garantit le nombre correct d'espaces réservés et évite les erreurs dans les cas extrêmes (valeur unique). L'utilisation de cette méthode fournit un moyen flexible et sécurisé de gérer les données dynamiques dans votre clause IN, en vous protégeant contre l'injection SQL.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal