mysql_real_escape_string으로 피해야 할 실수
SQL 주입을 방지하기 위해 일반적으로 사용되는 방법임에도 불구하고 mysql_real_escape_string은 부적절하게 활용될 경우 공격으로부터 보호하지 못할 수 있습니다. . 문자열 값에서 특수 문자를 효율적으로 이스케이프하는 동안 효율성이 저하되는 특정 시나리오가 발생할 수 있습니다.
올바른 사용법: 인용된 문자열 값
mysql_real_escape_string은 다음과 같은 경우에만 사용해야 합니다. SQL 문에 따옴표로 묶인 텍스트 내용을 삽입합니다. 예를 들면:
$value = mysql_real_escape_string($value, $link); $sql = "... `foo` = '$value' ...";
잘못된 사용
mysql_real_escape_string을 잘못 적용하면 취약점이 발생할 수 있습니다. 일반적인 실수는 다음과 같습니다:
인코딩 고려 사항
또 다른 함정은 데이터베이스 연결 인코딩을 잘못 구성하는 것입니다. 올바른 방법은 다음과 같습니다:
mysql_set_charset('utf8', $link);
그러나 mysql_query("SET NAMES 'utf8'", $link)를 사용하면 mysql_ API 사이에 불일치가 발생할 수 있습니다. 가정된 인코딩과 데이터베이스의 실제 인코딩. 이는 잠재적으로 멀티바이트 문자열과 관련된 주입 공격을 허용할 수 있습니다.
결론
mysql_real_escape_string은 의도한 대로 사용된다면 여전히 유용한 도구입니다. 그러나 SQL 주입 취약점을 방지하려면 한계를 인식하고 올바르게 적용하는 것이 필수적입니다. 보안 강화 및 사용 편의성을 위해 준비된 명령문과 같은 보다 현대적인 대안을 탐색하는 것이 좋습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3