> 데이터 베이스 > MySQL 튜토리얼 > `mysql_real_escape_string()`은 모든 문자 인코딩에서 SQL 주입에 대한 안정적인 방어입니까?

`mysql_real_escape_string()`은 모든 문자 인코딩에서 SQL 주입에 대한 안정적인 방어입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-01 03:21:17
원래의
154명이 탐색했습니다.

Is `mysql_real_escape_string()` a Reliable Defense Against SQL Injection in All Character Encodings?

mysql_real_escape_string()은 SQL 주입에 대한 난공불락의 방패입니까?

justinshattuck.com의 섹션에 따르면 mysql_real_escape_string()은 특정 SQL 주입에 대해 오류가 있을 수 있습니다. 아시아 문자 인코딩. 특히 인코딩이 BIG5 또는 GBK를 사용하여 mysql_real_escape_string()을 우회하여 위험한 문자를 쿼리에 삽입한다고 주장합니다.

이 취약점이 실제로 있습니까?

Stefan Esser에 따르면, 대답은 당황스러울 정도로 그렇습니다. 그는 SET NAMES를 사용할 때 mysql_real_escape_string()이 불안정하다고 주장합니다. 이 메서드는 mysql_real_escape_string()에 알리지 않고 응용 프로그램의 요구에 맞게 인코딩을 전환합니다. 결과적으로 멀티바이트 인코딩에서 백슬래시를 두 번째, 세 번째 또는 네 번째 바이트로 허용하면 문제가 발생합니다. Mysql_real_escape_string()은 이러한 불규칙성을 인식하지 못하고 문자를 올바르게 이스케이프 처리하지 못합니다.

웹 사이트 보호

Esser는 UTF-8이 안전한 인코딩으로 남아 있다고 제안하지만 UTF -8이 항상 옵션은 아닙니다. 불행하게도 더 안전한 대안인 mysql_set_charset은 최신 PHP 버전에서만 사용할 수 있습니다.

위 내용은 `mysql_real_escape_string()`은 모든 문자 인코딩에서 SQL 주입에 대한 안정적인 방어입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿