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 주입에 취약합니다. 해커는 탈출을 우회하고 무단 명령을 실행하는 악의적 인 쿼리를 만들 수 있습니다.
특정 공격 벡터
입력 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]));
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3