>백엔드 개발 >PHP 튜토리얼 >mysql_real_escape_string()은 여전히 ​​SQL 주입에 대한 안정적인 보호입니까?

mysql_real_escape_string()은 여전히 ​​SQL 주입에 대한 안정적인 보호입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-11 16:31:03721검색

Is mysql_real_escape_string() Still a Reliable Protection Against SQL Injection?

mysql_real_escape_string()의 무결성 평가

SQL 주입 공격으로부터 데이터베이스 쿼리를 보호하는 데 있어서 mysql_real_escape_string()의 신뢰성에 대한 우려가 제기되었습니다. . 비평가들은 적절한 보호를 제공하는 함수의 능력에 잠재적인 결함이 있음을 시사하는 오래된 기사를 참조합니다.

MySQL 문서

mysql_real_escape_string()에 대한 MySQL C API 문서는 이러한 우려를 인정합니다.

If you need to change the character set of the connection, you should use the mysql_set_character_set() function rather than executing a SET NAMES (or SET CHARACTER SET) statement. mysql_set_character_set() works like SET NAMES but also affects the character set used by mysql_real_escape_string(), which SET NAMES does not.

PHP의 대응

PHP에서 mysql_set_charset()은 MySQL의 mysql_set_character_set()과 유사한 방식으로 작동하며 PHP 대응 역할을 합니다.

증명 코드

<?php
$str = "'mystring'";

// Set encoding
mysql_set_charset('utf8');

// Escape string with correct encoding
$escaped_str = mysql_real_escape_string($str);

mysql_real_escape_string()을 사용하기 전에 mysql_set_charset()을 사용하여 인코딩을 수정하면 문자 집합이 올바르게 설정되고 함수가 의도한 대로 작동하는지 확인할 수 있습니다. 이는 잠재적인 취약점에 대한 우려를 해결하고 mysql_real_escape_string()이 SQL 주입 공격으로부터 효과적으로 보호할 수 있게 해줍니다.

위 내용은 mysql_real_escape_string()은 여전히 ​​SQL 주입에 대한 안정적인 보호입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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