mysql_real_escape_string()의 결함 해결
PHP 애플리케이션에서 널리 사용됨에도 불구하고 일부에서는 mysql_real_escape_string()의 보안 취약성에 대한 우려를 제기했습니다. ). 이 함수는 사용자 입력에서 특수 문자를 이스케이프 처리하여 SQL 삽입 공격을 방지하도록 설계되었습니다.
mysql_real_escape_string()이 완전히 부적절합니까?
MySQL C API 문서에서는 잠재적인 가능성을 인정합니다. mysql_real_escape_string()에 문제가 있습니다. 연결의 문자 집합을 변경하기 위해 SET NAMES/SET CHARACTER SET 문을 사용하지 않는 것이 좋습니다. 대신, mysql_real_escape_string()을 사용하기 전에 mysql_set_character_set() 함수를 호출해야 합니다.
증명 코드
PHP 함수 mysql_set_charset()는 mysql_real_escape_string에서 사용하는 문자 집합을 수정합니다. (). 이는 다음 코드 조각에 설명되어 있습니다.
<?php // Connect to MySQL and select the database $link = mysqli_connect("localhost", "user", "password", "database"); // Set the character set for the connection mysql_set_charset($link, "utf8"); // Escape the input using mysql_real_escape_string() $escaped_input = mysql_real_escape_string($link, $input); // Use the escaped input in a SQL query $query = "SELECT * FROM table WHERE field = '$escaped_input'";
이 접근 방식을 따르면 mysql_real_escape_string()에서 사용하는 문자 집합을 명시적으로 설정하여 특수 문자가 올바르게 이스케이프되도록 할 수 있습니다.
위 내용은 `mysql_real_escape_string()`은 SQL 주입으로부터 정말 안전한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!