집 >데이터 베이스 >MySQL 튜토리얼 >`addslashes()`는 실제로 SQL 주입을 방지합니까? 대신 `mysql_real_escape_string()`을 사용해야 하는 이유는 무엇입니까?
addslashes()
vs. mysql_real_escape_string()
SQL 인젝션 방지
addslashes()
에 대한 더 안전한 대안으로 자주 언급되지만, mysql_real_escape_string()
은 여전히 PHP 애플리케이션의 SQL 주입 취약점을 방지하기 위해 권장되는 방법입니다. 강력한 보안을 구축하려면 addslashes()
의 한계를 이해하는 것이 중요합니다.
다음 사항을 고려하세요. 사용자 입력 삭제를 위해 addslashes()
을 사용하는 SQL 쿼리에서 작은따옴표(')가 포함된 문자열이 발견됩니다. addslashes()
이 인용문을 멀티바이트 문자의 일부로 잘못 식별하여 쿼리가 삽입될 수 있습니다.
공격자는 특정 유니코드 인코딩(예: ISO-8859-1, UTF-8 제외)에서 멀티바이트 시퀀스를 종료하는 하이픈(-) 또는 유사한 문자를 추가하여 이를 악용할 수 있습니다. 이는 addslashes()
작은따옴표를 유효한 멀티바이트 문자의 일부로 처리하여 이스케이프 메커니즘을 우회하고 악성 코드 실행을 허용하도록 속입니다.
이 취약점은 인코딩별로 다릅니다. 널리 사용되는 유니코드 인코딩인 UTF-8은 동일한 멀티바이트 종료 문자를 사용하지 않기 때문에 일반적으로 이 특정 공격으로부터 안전합니다.
최적의 SQL 주입 보호를 위해서는 항상 mysql_real_escape_string()
보다 addslashes()
를 우선시하세요. 애플리케이션 수준 입력 유효성 검사와 데이터베이스 상호 작용을 위해 준비된 명령문을 사용하여 이를 보완합니다. addslashes()
의 약점을 인식하고 이러한 모범 사례를 구현함으로써 개발자는 SQL 주입 공격의 위험을 크게 줄일 수 있습니다.
위 내용은 `addslashes()`는 실제로 SQL 주입을 방지합니까? 대신 `mysql_real_escape_string()`을 사용해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!