PHP 스크립트 에서이 MySQL 문은 얼마나 안전합니까?
-
05-07-2019 - |
문제
이 MySQL 명령문은 PHP에 얼마나 안전합니까? SQL 주입에 취약합니까?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string($_SESSION['client']['id']),
mysql_escape_string($_POST['id']));
해결책
예, %d만으로 숫자 만 초래하기 때문에 문자열을 피할 필요가 없습니다. 단일 따옴표를 사용하면 속도가 향상됩니다. 안전하고 빠른 방법은 다음과 같습니다.
$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
다른 팁
아니오는 취약하지 않아야합니다.
다음은 귀하의 보안 방법에 대한 자세한 기사입니다. SQL 쿼리 PHP.
http://www.tech-evangelist.com/2007/11/05/preventing-sql-injection-attack/
나에게 괜찮아 보인다.
실제로 Sprintf ( "%d")가 숫자 만 초래할 수 있으므로이 경우 MySQL_ESCAPE_STRING을 사용할 필요가 있습니까?
제휴하지 않습니다 StackOverflow