이 기사에서는 사용자가 제출한 데이터를 정렬하고 처리하기 위해 mysql_real_escape_string을 사용하는 것과 addlashes 및 mysql_escape_string이라는 세 가지 유사한 함수를 사용하는 것의 차이점을 소개합니다. 이스케이프된 데이터는 데이터베이스에 직접 삽입될 수 있습니다.
addlashes와 mysql_real_escape_string의 차이점에 대한 좋은 설명입니다. 비록 많은 국내 PHP 코더들이 여전히 SQL 주입을 방지하기 위해 addlashes에 의존하고 있지만, 저는 여전히 모든 사람들이 중국어로 SQL 주입을 방지하기 위해 검사를 강화할 것을 권장합니다. addlashes의 문제점은 해커가 0xbf27을 사용하여 작은따옴표를 대체할 수 있는 반면, addlashes는 0xbf27을 0xbf5c27로만 변경하므로 유효한 멀티바이트 문자가 됩니다. 0xbf5c는 여전히 작은따옴표로 간주되므로 addlashes는 성공적으로 가로챌 수 없습니다.
물론, addlashes는 쓸모가 없습니다. 단일 바이트 문자열을 처리하는 데 사용됩니다. 다중 바이트 문자의 경우 mysql_real_escape_string을 사용하십시오.
또한 PHP 매뉴얼의 get_magic_quotes_gpc 예는 다음과 같습니다.
if (!get_magic_quotes_gpc()) {
$lastname = addlashes($_POST['lastname']);
} 또 다른 {
$lastname = $_POST['성'];
}
Magic_quotes_gpc가 이미 열려 있으면 $_POST['lastname']을 확인하는 것이 가장 좋습니다.
mysql_real_escape_string과 mysql_escape_string 두 함수의 차이점에 대해 이야기해 보겠습니다.
mysql_real_escape_string은 (PHP 4 >= 4.3.0, PHP 5) 경우에만 사용할 수 있습니다. 그렇지 않으면 mysql_escape_string만 사용할 수 있습니다. 둘 사이의 차이점은 다음과 같습니다.
mysql_real_escape_string은 연결의 현재 문자 집합을 고려하지만 mysql_escape_string은 그렇지 않습니다.
요약하자면,
addlashes()는 강제 추가입니다.
mysql_real_escape_string()은 문자 집합을 결정하지만, PHP 버전에 대한 요구 사항
은 연결의 현재 문자 집합을 고려하지 않습니다.