집 >데이터 베이스 >MySQL 튜토리얼 >멀티바이트 문자를 사용하는 경우에도 PHP의 addlashes()가 SQL 주입에 대해 정말 안전한가요?
PHP의 addslashes()
과 SQL 인젝션 취약점
SQL 삽입 공격에 대한 보호 수단으로 자주 사용되는 PHP 함수addslashes()
에는 특히 멀티바이트 문자를 처리할 때 보안을 손상시킬 수 있는 제한 사항이 있습니다. 이 문서에서는 addslashes()
가 적절한 보호를 제공하지 못하는 경우
멀티바이트 문자 인코딩 문제
입력 데이터에 멀티바이트 문자가 포함된 경우 addslashes()
는 백슬래시를 잘못 삽입하여 이스케이프 시퀀스를 방해하고 취약점을 생성할 수 있습니다. 이는 addslashes()
이 멀티바이트 문자의 인코딩을 정확하게 처리하지 못할 수 있기 때문에 발생합니다.
예시:
<code class="language-php">$input = "⭐' OR 1=1 --"; $escapedInput = addslashes($input); // Escapes as ⭐\' OR 1=1 --</code>
여기서 멀티바이트 별표 문자 뒤의 작은따옴표는 이스케이프 처리되지 않은 상태로 유지되어 시스템이 SQL 주입에 노출됩니다.
인코딩 관련 취약점
문제는 addslashes()
가 EUC-JP 또는 Shift-JIS와 같은 멀티바이트 문자 인코딩을 올바르게 해석하지 못할 가능성이 있기 때문에 발생합니다. 이러한 인코딩의 특정 문자 시퀀스에는 후행 0x5c 바이트가 포함되어 addslashes()
작은따옴표를 이스케이프하는 대신 멀티바이트 문자를 생성하도록 오해할 수 있습니다.
모범 사례: 그 이상 addslashes()
addslashes()
은 몇 가지 기본적인 보호 기능을 제공하지만, 특히 멀티바이트 문자 집합의 경우 SQL 삽입을 방지하기 위한 안정적인 솔루션은 아닙니다. 강력한 보안을 위해 mysqli_real_escape_string()
(MySQLi의 경우) 또는 이상적으로는 준비된 명령문과 같은 고급 기술을 활용하세요. 준비된 문은 SQL 주입 취약점을 예방하기 위해 권장되는 접근 방식입니다.
위 내용은 멀티바이트 문자를 사용하는 경우에도 PHP의 addlashes()가 SQL 주입에 대해 정말 안전한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!