>백엔드 개발 >PHP 튜토리얼 >`mysql_real_escape_string()`은 정말로 안전합니까? 아시아 문자 인코딩이 보호를 우회할 수 있습니까?

`mysql_real_escape_string()`은 정말로 안전합니까? 아시아 문자 인코딩이 보호를 우회할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 18:17:02894검색

Is `mysql_real_escape_string()` Truly Safe: Can Asian Character Encodings Bypass its Protection?

mysql_real_escape_string()은 SQL 주입으로부터 완전히 보호됩니까?

mysql_real_escape_string()을 특정 아시아 문자 인코딩으로 우회할 수 있다는 최근 주장이 퍼졌습니다. , 특히 Big5 및 GBK입니다. 이 주장이 유효합니까? 그렇다면 준비된 설명을 사용하지 않고 어떻게 웹사이트를 보호할 수 있습니까?

취약성

Stefan Esser에 따르면 mysql_real_escape_string() SET NAMES 명령을 사용할 때 취약점이 나타납니다. 이 명령은 문자 인코딩을 변경하여 mysql_real_escape_string()이 백슬래시를 추가 바이트로 사용하는 특정 멀티바이트 인코딩을 인식하지 못하도록 렌더링합니다. 이러한 잘못된 이스케이프 처리는 웹 사이트의 보안을 손상시킬 수 있습니다.

안전 장치

UTF-8 인코딩은 이 악용에 취약하지 않지만 인코딩을 안전하게 변경하려면 mysql_set_charset을 사용하는 것이 중요합니다. . 그러나 이 기능은 최신 PHP 버전에서만 사용할 수 있습니다. 준비된 명령문이나 mysql_set_charset을 사용할 수 없는 경우 SQL 주입 공격으로부터 웹사이트를 보호하기 위한 대체 방법을 모색해야 할 수도 있습니다.

위 내용은 `mysql_real_escape_string()`은 정말로 안전합니까? 아시아 문자 인코딩이 보호를 우회할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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