Насколько безопасен этот оператор MySQL в сценарии PHP?
-
05-07-2019 - |
Вопрос
Насколько безопасен этот оператор MySQL, встроенный в PHP? Будет ли он уязвим для SQL-инъекций?
$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())",
mysql_escape_string( Насколько безопасен этот оператор MySQL, встроенный в PHP? Будет ли он уязвим для SQL-инъекций?
<*>SESSION['client']['id']),
mysql_escape_string( Насколько безопасен этот оператор MySQL, встроенный в PHP? Будет ли он уязвим для SQL-инъекций?
<*>POST['id']));
Решение
Да, так как% d приводит только к числу, нет необходимости экранировать строку. Использование одинарных кавычек также обеспечит улучшение скорости. Так что безопасный и быстрый способ это:
$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', Да, так как% d приводит только к числу, нет необходимости экранировать строку. Использование одинарных кавычек также обеспечит улучшение скорости. Так что безопасный и быстрый способ это:
<*>SESSION['client']['id'], Да, так как% d приводит только к числу, нет необходимости экранировать строку. Использование одинарных кавычек также обеспечит улучшение скорости. Так что безопасный и быстрый способ это:
<*>POST['id']);
Другие советы
Нет, это не должно быть уязвимо.
Вот подробная статья о том, как защитить свои SQL запросы в PHP .
http: //www.tech- evangelist.com/2007/11/05/preventing-sql-injection-attack/ р>
Это выглядит хорошо для меня.
На самом деле, есть ли необходимость использовать mysql_escape_string в этом случае, так как sprintf ("% d ") может привести только к числу?