>  기사  >  백엔드 개발  >  mysql_real_escape_string() 및 mysql_escape_string()이 앱 보안에 충분합니까?

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 03:27:03818검색

Are mysql_real_escape_string() and mysql_escape_string() Sufficient for App Security?

mysql_real_escape_string() 및 mysql_escape_string()은 애플리케이션에 대해 충분히 안전합니까?

소개:

앱 보안을 유지하는 것이 중요하며 데이터베이스 보안도 중요한 역할을 합니다. mysql_real_escape_string() 및 mysql_escape_string()은 일반적으로 SQL 삽입을 방지하는 데 사용되지만 효율성에 대한 우려가 있습니다.

질문:

mysql_real_escape_string() 그리고 mysql_escape_string()이면 앱 보안에 충분합니까?

답변:

아니요

취약점 mysql_real_escape_string() 및 mysql_escape_string()

이러한 기능은 여러 보안 허점으로 인해 포괄적인 앱 보안에 충분하지 않습니다.

SQL 주입:

  • 보호 주장에도 불구하고 이러한 함수는 특히 쿼리에 사용되는 PHP 변수와 관련하여 SQL 주입에 취약합니다.
  • 예:

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

    이 쿼리는 다음과 같습니다. 악의적인 데이터를 삽입하여 악용할 수 있으며 잠재적으로 무단 데이터베이스 액세스로 이어질 수 있습니다.

LIKE SQL 공격:

  • LIKE 쿼리는 다음을 사용하여 손상될 수 있습니다. "%" 또는 "_"와 같은 특수 문자를 사용하여 의도한 검색 기준을 우회합니다.
  • 예:

    $sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";  

    이 쿼리를 사용하면 공격자가 모든 기록을 검색할 수 있습니다. 보안 위험을 초래합니다.

문자 집합 악용:

  • Internet Explorer는 여전히 문자 집합 악용에 취약하여 해커가 임의의 SQL 명령을 삽입할 수 있습니다. SQL 주입을 포함합니다.

권장 솔루션: 준비된 문

이러한 취약점을 해결하기 위해 권장되는 보안 조치는 준비된 문을 사용하는 것입니다.

  • 준비된 명령문은 데이터베이스 서버 고유의 보안 메커니즘을 활용합니다.
  • 의도한 SQL만 실행하여 SQL 주입을 방지합니다.
  • 또한 준비된 명령문은 코드를 단순화하고 취약점을 최소화합니다.

예:

$pdo = new PDO($dsn);

$column = 'url';
$value = 'http://www.stackoverflow.com/';
$limit = 1;

$statement = $pdo->prepare('SELECT url FROM GrabbedURLs WHERE ' . $column . '=? LIMIT ' . $limit);
$statement->execute(array($value));
while (($data = $statement->fetch())) { }

결론:

mysql_real_escape_string() 및 mysql_escape_string()은 특정 항목에 대해 제한적인 보호를 제공합니다. SQL 주입 공격. 그러나 다양한 다른 취약점으로부터 애플리케이션을 보호하기에는 충분하지 않습니다. 권장되는 접근 방식은 준비된 설명을 사용하여 포괄적인 앱 보안을 보장하는 것입니다.

위 내용은 mysql_real_escape_string() 및 mysql_escape_string()이 앱 보안에 충분합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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