Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengukur Klausa SQL IN dengan Selamat dalam Android?

Bagaimana untuk Mengukur Klausa SQL IN dengan Selamat dalam Android?

Barbara Streisand
Lepaskan: 2025-01-18 17:21:11
asal
551 orang telah melayarinya

How to Securely Parametrize the SQL IN Clause in Android?

Melindungi Android SQL Anda DALAM Klausa

Mencegah suntikan SQL adalah penting apabila membina pertanyaan SQL, terutamanya yang menggunakan klausa IN. Walaupun kaedah rawQuery Android menggunakan ruang letak (?), menggantikannya secara langsung dengan data yang disediakan pengguna merupakan risiko keselamatan yang ketara.

Penyelesaian teguh melibatkan parametrisasi klausa IN. Pendekatan ini menggunakan rentetan pemegang tempat yang dijana, mengelakkan kemasukan langsung input pengguna dalam pertanyaan SQL itu sendiri.

Pendekatan Selamat:

  1. Jana Pemegang Tempat: Cipta rentetan yang mengandungi bilangan ruang letak yang betul (?). Fungsi pembantu seperti makePlaceholders(int len) menjana rentetan len yang dipisahkan koma dengan tanda soal. Fungsi ini memastikan rentetan pemegang tempat diformat secara konsisten dan bebas daripada data yang dibekalkan pengguna.

  2. Bina Pertanyaan: Sepadukan rentetan ruang letak yang dijana ke dalam pertanyaan SQL anda:

    <code class="language-sql">String query = "SELECT * FROM table WHERE name IN (" + makePlaceholders(names.length) + ")";</code>
    Salin selepas log masuk
  3. Sediakan dan Ikat: Sediakan pertanyaan dan ikat nilai dinamik sebagai tatasusunan:

    <code class="language-java">Cursor cursor = mDb.rawQuery(query, names);</code>
    Salin selepas log masuk

    Yang penting, bilangan nilai dalam tatasusunan names mestilah sepadan dengan tepat bilangan ruang letak yang dijana.

Contoh Kod:

Berikut ialah contoh pelaksanaan fungsi 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>
Salin selepas log masuk

Kaedah ini membina rentetan ruang letak secara dinamik, memastikan pelaksanaan pertanyaan selamat. Dengan menggunakan pertanyaan berparameter, anda mengurangkan kerentanan suntikan SQL dengan berkesan dan melindungi pangkalan data Android anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengukur Klausa SQL IN dengan Selamat dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan