Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Melepaskan Rentetan dalam Java dengan Berkesan untuk Mencegah Suntikan SQL?
Escape Strings untuk Mencegah SQL Injection dalam Java
Di Java, melarikan diri dari rentetan adalah penting untuk mencegah serangan suntikan SQL. Fungsi rentetan "replaceAll" boleh menyusahkan untuk tujuan ini. Penyelesaian alternatif adalah untuk menukar aksara tertentu untuk melarikan diri urutan yang menyekat suntikan SQL dalam MySQL.
Peraturan Penukaran:
Fungsi Melarikan Diri yang Diperbaiki:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class EscapedString { public static String escape(String input) { Matcher matcher = Pattern.compile("(\n|\\"|\')").matcher(input); StringBuilder escaped = new StringBuilder(); while (matcher.find()) { String match = matcher.group(); switch (match) { case "\n": matcher.appendReplacement(escaped, "\\n"); break; case "\"": matcher.appendReplacement(escaped, "\\\""); break; case "'": matcher.appendReplacement(escaped, "\\'"); break; } } matcher.appendTail(escaped); return escaped.toString(); } }
Faedah Menggunakan Rentetan Escaped:
Contoh Penggunaan:
String unescapedQuery = "SELECT * FROM users WHERE username = '" + username + "'"; String escapedQuery = EscapedString.escape(unescapedQuery);
Dengan menggunakan rentetan yang terlepas dalam pertanyaan, anda menghalang serangan suntikan SQL di mana penyerang berpotensi memanipulasi pertanyaan untuk mengakses tanpa kebenaran data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepaskan Rentetan dalam Java dengan Berkesan untuk Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!