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 주입:
예:
$sql = "SELECT number FROM PhoneNumbers WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);
이 쿼리는 다음과 같습니다. 악의적인 데이터를 삽입하여 악용할 수 있으며 잠재적으로 무단 데이터베이스 액세스로 이어질 수 있습니다.
LIKE SQL 공격:
예:
$sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";
이 쿼리를 사용하면 공격자가 모든 기록을 검색할 수 있습니다. 보안 위험을 초래합니다.
문자 집합 악용:
권장 솔루션: 준비된 문
이러한 취약점을 해결하기 위해 권장되는 보안 조치는 준비된 문을 사용하는 것입니다.
예:
$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!