>데이터 베이스 >MySQL 튜토리얼 >`addslashes()`는 실제로 SQL 주입을 방지합니까? 대신 `mysql_real_escape_string()`을 사용해야 하는 이유는 무엇입니까?

`addslashes()`는 실제로 SQL 주입을 방지합니까? 대신 `mysql_real_escape_string()`을 사용해야 하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-15 19:34:17253검색

Does `addslashes()` Really Protect Against SQL Injection, and Why Should You Use `mysql_real_escape_string()` Instead?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.