Вопрос

Я видел много статей и вопросов о MySQLi, и все они утверждают, что она защищает от SQL-инъекций.Но надежно ли это, или есть еще какой-то способ обойти это?Меня не интересуют межсайтовые сценарии или фишинговые атаки, только SQL-инъекции.

Для начала мне следовало бы сказать, что я использую подготовленные утверждения.Это то, что я имел в виду, говоря о mysqli.Если я использую подготовленные операторы без какой-либо конкатенации строк, будет ли это надежно?

Это было полезно?

Решение

Но надежно ли это, или есть еще какой-то способ обойти это?

Нет, ты должен знать, что делаешь.Если вы используете связанные параметры (функция MySqli), вы полностью защищены от атак типа инъекции. от этого вектора атаки.Это не мешает вам — программисту — напрямую вставлять строки и тем самым осуществлять атаки путем внедрения.Вы должны использовать эту функцию по назначению.

Ре:Редактировать

Для начала мне следовало бы сказать, что я использую подготовленные утверждения.Это то, что я имел в виду, говоря о mysqli.Если я использую подготовленные операторы без какой-либо конкатенации строк, будет ли это надежно?

«Защита от дурака» — все еще такое опасное слово.Но вы защищены от атак путем внедрения переменных, которые связаны с помощью подготовленных операторов.Это связано с тем, что связанные параметры передаются отдельно от SQL-запроса.При «традиционном» подходе к встраиванию строки серверу базы данных необходимо проанализировать входные данные, и в этом есть множество крайних случаев (кодировки и т. д.).Когда данные и запрос отправляются отдельно, фактический анализ не происходит (по крайней мере, не анализ переменных данных).

Другие советы

Он не защищает от SQL-инъекций лучше, чем старый модуль mysql, а просто упрощает задачу разработчику, который теперь может использовать подготовленные операторы вместо вызова mysql_real_escape_string.

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