Intereting Posts

Рекомендуемый способ безопасного использования пользовательского порядка в выражении SQL

Возможно ли связатьParam в порядке по части инструкции sql. Например, возможно ли следующее?

select whatever from table where age > :age order by :user_specified_order_by_field_name_here 

а если нет, то каков рекомендуемый способ убедиться, что user_specified_order_by_field_name_here не содержит код SQL-инъекции?

Нет, PDO не поддерживает динамические имена таблиц или столбцов в качестве подготовленных значений. Любые имена столбцов, которые вы вставляете в запрос, не будут экранированы и приведут к уязвимости SQL-инъекции.

PDO :: Quote () тоже не поможет – может быть только строки, но в mySQL имена столбцов не являются строками.

Единственный 100% безопасный способ предотвратить проблемы – сравнить user_specified_order_by_field_name_here с списком допустимых столбцов в таблице. Вы даже можете использовать числа (которые вы разрешаете внутри имен столбцов внутри), чтобы добавить дополнительный слой безвестности.