"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `mysql_real_escape_string ()`및`mysql_escape_string ()`mySQL 주입 공격을 방지하기에 충분합니까?

`mysql_real_escape_string ()`및`mysql_escape_string ()`mySQL 주입 공격을 방지하기에 충분합니까?

2025-03-22에 게시되었습니다
검색:930

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Prevent MySQL Injection Attacks?

MySQL Injection Attacks: A Deeper Dive

Introduction

Ensuring the security of web applications is crucial, and database protection is a vital part of this effort. 이 기사는 SQL 공격에 대한 보호에서 mysql_real_escape_string () 및 mysql_escape_string ()을 사용하는 효과를 조사합니다. Mysql_escape_string ()은 데이터를 SQL 쿼리에 삽입하기 전에 데이터를 빠져 나가는 데 일반적으로 사용됩니다. 그러나 이러한 기능은 모든 공격 벡터에 대한 충분한 보호입니까?

전문가 의견

[mysql_real_escape_string ()은 SQL 주입에 대한 완전한 보호를 제공하지 않습니다. 쿼리 내에서 PHP 변수를 피하기위한 것이기 때문입니다. 이스케이프 테이블 또는 열 이름 또는 한계 필드를 처리 할 수 ​​없습니다.

알려진 공격에 대한 취약성

$sql = "SELECT number FROM PhoneNumbers " .
       "WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);

이 쿼리는 $ field 또는 $ value에 악의적 인 입력이 포함 된 경우 SQL 주입에 취약합니다. 해커는 탈출을 우회하고 무단 명령을 실행하는 악의적 인 쿼리를 만들 수 있습니다.

특정 공격 벡터

  • MySQL_Real_String (MySQL_Real_String). 이렇게하면 모든 레코드가 테이블에 노출되어 잠재적으로 민감한 정보를 드러 낼 수 있습니다.
  • charset 익스플로잇 :
이러한 악용은 인터넷 익스플로러 및 PHP의 숯불 처리에서 취약점을 활용합니다. 해커는 임의의 SQL 쿼리를 실행할 수 있습니다. mysql_real_escape_string ($ argv [1]), mysql_real_escape_string ($ argv [2]), mysql_real_escape_string ($ argv [3]); Exploit)

입력 3 :

는 예상치 못한 SQL 쿼리를 실행합니다

$sql = sprintf("SELECT url FROM GrabbedURLs WHERE %s LIKE '%s%%' LIMIT %s",
               mysql_real_escape_string($argv[1]),
               mysql_real_escape_string($argv[2]),
               mysql_real_escape_string($argv[3]));
    솔루션 : 준비된 진술
  • 전문가를 사용하는 대신에 준비된 진술을 사용합니다. 준비된 명령문은 유효한 SQL 만 실행되는 서버 측 기술입니다. 이 접근법은 알려진 및 미지의 SQL 주입에 대한 포괄적 인 보호 기능을 제공합니다.
  • $ sql = 'grabbedurls에서 URL을 선택합니다. $ 열. '=? 한계 ?'; $ station = $ pdo-> 준비 ($ sql); $ station-> execute (array ($ value, $ limit));
  • 이 코드는 준비된 문을 사용하여 사용자 입력을 피하고 쿼리를 안전하게 실행합니다. 주사, 그들은 완전한 보안에 충분하지 않습니다. 준비된 진술은 강력한 데이터베이스 보안을위한 권장되는 접근법입니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3