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