광범위하게 사용됨에도 불구하고 mysql_real_escape_string()은 SQL 주입 공격에 면역되지 않습니다.
요구 사항: 데이터베이스 연결은 big5, cp932, gb2312, gbk 또는 sjis와 같은 취약한 문자 집합을 사용해야 합니다.
단계:
결과: 클라이언트-서버 인코딩 불일치로 인해 쿼리에 이스케이프 처리되지 않은 작은따옴표가 포함되어 SQL 삽입이 성공했습니다.
mysql_real_escape_string()의 버그: 이전에 MySQL 버전, 유효하지 않은 멀티바이트 문자는 클라이언트가 연결 인코딩을 알고 있었더라도 이스케이프 목적을 위해 단일 바이트로 처리되었습니다.
PDO 취약점: PDO의 에뮬레이트된 준비된 문은 mysql_real_escape_string을 사용하여 구성됩니다. () 따라서 이 공격에 취약합니다.
안전한 방법:
위 내용은 문자 세트 조작을 사용하여 SQL 주입이 `mysql_real_escape_string()`을 우회할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!