Насколько безопасен этот оператор MySQL в сценарии PHP?

StackOverflow https://stackoverflow.com/questions/1201247

Вопрос

Насколько безопасен этот оператор 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 ") может привести только к числу?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top