Nama Lajur Pembolehubah Menggunakan Penyata Disediakan
Isu:
Bolehkah nama lajur berubah ditentukan apabila menggunakan pernyataan yang disediakan dalam MySQL menggunakan Java untuk menghalang suntikan SQL kelemahan?
Penjelasan:
Pernyataan yang disediakan direka bentuk untuk melindungi daripada suntikan SQL dengan mengasingkan parameter pertanyaan daripada pernyataan pertanyaan utama. Apabila cuba menggunakan pernyataan yang disediakan, nama lajur tidak dikenali sebagai parameter dan sebaliknya diinterpolasi ke dalam pertanyaan sebagai nilai literal. Ini boleh membawa kepada isu keselamatan jika nama lajur yang disediakan tidak dibersihkan dengan betul.
Penyelesaian:
// Sanitize the user-provided column names String sanitizedColumns = columnNames.replace("'", "\'"); // Build the SQL query string String query = "SELECT a,b,c,ROW_NUMBER() OVER(), " + sanitizedColumns + " FROM " + name + " WHERE d=?"; // Prepare the statement stmt = conn.prepareStatement(query); stmt.setString(1, "x");
Atas ialah kandungan terperinci Bolehkah Penyata Disediakan dalam Java Mengendalikan Nama Lajur Pembolehubah dengan Selamat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!