>백엔드 개발 >PHP 튜토리얼 >`mysql_real_escape_string()` 및 `mysql_escape_string()`은 귀하의 애플리케이션을 보호하기에 충분합니까?

`mysql_real_escape_string()` 및 `mysql_escape_string()`은 귀하의 애플리케이션을 보호하기에 충분합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 06:29:31593검색

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure Your Application?

mysql_real_escape_string() 및 mysql_escape_string()이 앱 보안에 충분합니까?

SQL 주입 보호에 mysql_real_escape_string()이 충분합니까?

mysql_real_escape_string() SQL 주입 공격을 방지하기 위해 일반적으로 사용되는 기능입니다. 특수 문자를 이스케이프된 해당 문자로 대체하여 공격자가 쿼리에 악성 SQL 코드를 삽입하기 어렵게 만듭니다. 하지만 완벽하지는 않습니다.

mysql_real_escape_string()의 한 가지 제한 사항은 변수 데이터만 이스케이프한다는 것입니다. 테이블 이름, 열 이름, LIMIT 필드를 대상으로 하는 공격에는 효과적이지 않습니다. 예를 들어 공격자는 모든 레코드를 반환하는 '%%'와 같은 값을 검색하기 위해 LIKE 연산자를 사용하여 쿼리에 악성 SQL을 삽입할 수 있습니다.

또한 mysql_real_escape_string()은 다음 경우에만 효과적입니다. 알려진 SQL 주입 공격 데이터베이스 서버의 취약점을 악용하는 새로운 공격이나 알려지지 않은 공격으로부터 보호할 수 없습니다.

선제적 방어를 위한 준비된 진술

탈출과 같은 대응 조치에 의존하기보다는 준비된 진술을 사용하는 것이 좋습니다. . 준비된 문은 실행되기 전에 데이터베이스 서버에서 미리 컴파일된 SQL 문입니다. 이는 서버가 미리 컴파일된 명령문만 실행하므로 악의적인 SQL이 쿼리에 주입되는 것을 방지합니다.

준비된 명령문은 SQL을 처리하도록 설계되었으므로 SQL 주입 및 기타 공격에 대한 사전 방어입니다. 안전한 방식. 탈출에 비해 취약성이 낮고 더 높은 수준의 보안을 제공합니다.

위 내용은 `mysql_real_escape_string()` 및 `mysql_escape_string()`은 귀하의 애플리케이션을 보호하기에 충분합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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