문제

이 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을 사용할 필요가 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top