Насколько безопасен этот оператор MySQL в сценарии PHP? - PullRequest
1 голос
/ 29 июля 2009

Насколько безопасен этот оператор 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']));

Ответы [ 3 ]

3 голосов
/ 29 июля 2009

Да, поскольку% d приводит только к числу, поэтому нет необходимости экранировать строку. Использование одинарных кавычек также обеспечит улучшение скорости. Так что безопасный и быстрый способ это:

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', $_SESSION['client']['id'], $_POST['id']);
1 голос
/ 29 июля 2009

Это выглядит хорошо для меня.

Фактически, есть ли необходимость использовать mysql_escape_string в этом случае, так как sprintf ("% d") может привести только к числу?

1 голос
/ 29 июля 2009

Нет, оно не должно быть уязвимым.

Вот подробная статья о том, как защитить ваши SQL запросы в PHP .

http://www.tech -evangelist.com / 2007/11 / 05 / предотвращение-SQL-инъекции нападение /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...