> 백엔드 개발 > PHP 튜토리얼 > mysql_real_escape_string()이 실제로 SQL 주입 공격을 예방할 수 있습니까?

mysql_real_escape_string()이 실제로 SQL 주입 공격을 예방할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-27 20:32:09
원래의
382명이 탐색했습니다.

Can mysql_real_escape_string() Really Prevent SQL Injection Attacks?

mysql_real_escape_string()을 우회하는 SQL 주입

널리 알려진 믿음에도 불구하고 SQL 주입에서는 mysql_real_escape_string() 보호 장치를 우회하는 것이 가능합니다. 이러한 공격으로부터 보호하기 위해 일반적으로 이 기능이 사용되기 때문에 이는 특히 우려됩니다.

Exploit

이 취약점을 보여주는 공격이 원본 게시물에 요약되어 있습니다. 핵심은 특정 문자 세트(예: gbk)와 함께 특정 문자 시퀀스("xbfx27")를 활용하는 것입니다. 이러한 조건에서 mysql_real_escape_string()에 의해 처리되면 페이로드는 이스케이프되지 않은 ' 문자가 되며, 이는 주입 목적으로 악용될 수 있습니다.

의미

이 취약점 SQL 주입에 대한 방어 메커니즘으로 mysql_real_escape_string()이 널리 퍼져 있다는 점을 고려하면 이는 광범위한 의미를 갖습니다. 이는 mysql_ 또는 PDO_MySQL 확장을 사용하는 PHP 애플리케이션에 영향을 미치며, 특히 취약한 문자 집합이 사용되거나 PDO의 에뮬레이트된 준비된 문이 사용되는 경우에 영향을 미칩니다.

안전한 실천 방법

이 문제를 완화하려면 취약성이 있으므로 모범 사례를 준수하는 것이 중요합니다.

  • MySQL로 마이그레이션 mysql_real_escape_string() 버그(5.1.20, 5.0.22 또는 5.1.11)의 영향을 받지 않는 버전.
  • 연결 인코딩에 취약하지 않은 문자 집합을 사용합니다(예: utf8, utf8mb4).
  • PDO에서 에뮬레이트된 준비된 문을 비활성화합니다. (PDO::ATTR_EMULATE_PREPARES).
  • PDO의 DSN 문자 집합 매개변수를 활용하여 PHP 5.3.6 이상에서 연결 인코딩을 올바르게 설정하세요.
  • PDO 또는 MySQLi에서 진정한 준비된 문을 사용하는 것을 고려하세요. 이 취약점의 영향을 받지 않습니다.

이 지침에 따라 다음을 수행할 수 있습니다. 데이터베이스 애플리케이션의 보안을 강화하고 mysql_real_escape_string() 함수를 우회하려는 SQL 주입 공격으로부터 보호합니다.

위 내용은 mysql_real_escape_string()이 실제로 SQL 주입 공격을 예방할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿