아시아 인코딩을 사용한 SQL 주입에 대한 mysql_real_escape_string()의 보안 평가
질문:
다음과 같은 보안 취약점이 보고되었습니다. mysql_real_escape_string()은 BIG5 또는 GBK와 같은 특정 아시아 문자 인코딩을 사용하여 우회할 수 있습니다. 이 취약점이 유효한가요? 그렇다면 준비된 명령문을 사용하지 않고 어떻게 완화할 수 있습니까?
답변:
PHP 개발자인 Stefan Esser에 따르면 mysql_real_escape_string( )은 특정 인코딩 설정이 다음과 같은 경우 SQL 주입에 대해 완전히 안전하지 않습니다.
설명:
이 문제는 SET NAMES 명령을 사용하여 데이터베이스 문자 인코딩을 변경할 때 발생합니다. 이러한 인코딩 변경은 백슬래시()와 같은 특수 문자가 이스케이프되는 방식에 영향을 줍니다. Mysql_real_escape_string()은 기본 인코딩을 가정하고 이에 따라 이스케이프 논리를 조정하지 않습니다.
따라서 공격자가 백슬래시를 후속 바이트로 허용하는 인코딩을 사용하는 경우 mysql_real_escape_string()은 이러한 문자를 제대로 이스케이프하지 못할 수 있습니다. 이는 성공적인 SQL 주입 공격으로 이어질 수 있습니다.
완화:
준비된 문을 사용할 수 없을 때 이 취약점을 해결하려면:
위 내용은 mysql_real_escape_string()은 아시아 인코딩을 사용한 SQL 주입에 취약합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!