가능한 중복 : mysqli_real_escape_string을 사용하여 쿼리 문자열을 보호 할 수 있습니까?
Are dynamic mysql queries with sql escaping just as secure as prepared statements?
mysqli_real_escape_string
쿼리를 확보하기에 충분? 또는 데이터베이스를 안전하게 쿼리 할 때 고려해야 할 사항이 더 있습니까?
가능한 중복 : mysqli_real_escape_string을 사용하여 쿼리 문자열을 보호 할 수 있습니까?
Are dynamic mysql queries with sql escaping just as secure as prepared statements?
mysqli_real_escape_string
쿼리를 확보하기에 충분? 또는 데이터베이스를 안전하게 쿼리 할 때 고려해야 할 사항이 더 있습니까?
어디서나 올바르게 사용되는 경우 real_escape_string은 옵션입니다. 다음 코드를 고려하십시오.
$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ', mysqli_real_escape_string($page);
안전하지 않습니까? real_escape_ 문자열은 따옴표 안에 문자열을 이스케이프하는 데에만 사용할 수 있습니다. $page
은 1 OR id IN (2,3,4,5,6,7,8,9)
일 수 있습니다. → 실제 인용 부호는 사용하지 않습니다. 올바른 데이터 유형 (int)으로 캐스팅하면이 경우 도움이 될 수 있습니다. 당신은 준비된 진술을 사용하는 편이 나을 것이므로, 잘못 사용하는 것은 쉽지 않다.
@irc I *가 그것에 대해 연구 중이다. 지금 내가 한 말 때문에 대답을 사용할 수도 있습니다. – NullUserException
준비된 문을 사용할 수 있습니다. ircmaxwell의 의견에 대한 링크를 따라 가십시오. – NullUserException
당신이하고있는 일의 예를 보여줄 수 있습니까? –