ホームページ >Java >&#&チュートリアル >Java で文字列を効果的にエスケープして SQL インジェクションを防ぐにはどうすればよいですか?
Java で SQL インジェクションを防ぐためのエスケープ文字列
Java では、SQL インジェクション攻撃を防ぐために文字列をエスケープすることが重要です。 「replaceAll」文字列関数は、この目的では扱いにくい場合があります。別の解決策は、MySQL で SQL インジェクションをブロックするエスケープ シーケンスに特定の文字を変換することです。
変換ルール:
改善されたエスケープ機能:
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(); } }
エスケープ文字列を使用する利点:
使用例:
String unescapedQuery = "SELECT * FROM users WHERE username = '" + username + "'"; String escapedQuery = EscapedString.escape(unescapedQuery);
を使用することにより、クエリ内のエスケープ文字列を使用すると、攻撃者がクエリを操作して不正なデータにアクセスする可能性がある SQL インジェクション攻撃を防ぐことができます。
以上がJava で文字列を効果的にエスケープして SQL インジェクションを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。