Maison > base de données > tutoriel mysql > Comment paramétrer en toute sécurité la clause SQL IN dans Android ?

Comment paramétrer en toute sécurité la clause SQL IN dans Android ?

Barbara Streisand
Libérer: 2025-01-18 17:21:11
original
505 Les gens l'ont consulté

How to Securely Parametrize the SQL IN Clause in Android?

Sécuriser votre clause SQL IN Android

Empêcher l'injection SQL est primordial lors de la création de requêtes SQL, en particulier celles utilisant la clause IN. Bien que la méthode rawQuery d'Android utilise des espaces réservés (?), leur remplacement direct par des données fournies par l'utilisateur constitue un risque de sécurité important.

Une solution robuste consiste à paramétrer la clause IN. Cette approche utilise une chaîne d'espace réservé générée, évitant l'inclusion directe des entrées de l'utilisateur dans la requête SQL elle-même.

L'approche sécuritaire :

  1. Générer des espaces réservés : Créez une chaîne contenant le nombre correct d'espaces réservés (?). Une fonction d'assistance telle que makePlaceholders(int len) génère une chaîne de points d'interrogation len séparés par des virgules. Cette fonction garantit que la chaîne d'espace réservé est formatée de manière cohérente et exempte de données fournies par l'utilisateur.

  2. Construisez la requête : Intégrez la chaîne d'espace réservé générée dans votre requête SQL :

    <code class="language-sql">String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")";</code>
    Copier après la connexion
  3. Préparer et lier : Préparez la requête et liez les valeurs dynamiques sous forme de tableau :

    <code class="language-java">Cursor cursor = mDb.rawQuery(query, names);</code>
    Copier après la connexion

    Essentiellement, le nombre de valeurs dans le tableau names doit correspondre précisément au nombre d'espaces réservés générés.

Exemple de code :

Voici un exemple d'implémentation de la fonction makePlaceholders :

<code class="language-java">public static String makePlaceholders(int len) {
    StringBuilder sb = new StringBuilder(len * 2 - 1);
    sb.append("?");
    for (int i = 1; i < len; i++) {
        sb.append(",?");
    }
    return sb.toString();
}</code>
Copier après la connexion

Cette méthode construit dynamiquement la chaîne d'espace réservé, garantissant une exécution sécurisée des requêtes. En utilisant des requêtes paramétrées, vous atténuez efficacement les vulnérabilités d'injection SQL et protégez votre base de données Android.

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