Выпадающие поля выбора уязвимы для любого типа инъекций

Я читал здесь мантру «никогда не доверяю пользовательскому вводу», и это имеет смысл. Я могу понять, что любое поле, введенное пользователем, является подозрительным. Однако, как насчет выпадающих полей? Могут ли они использоваться для инъекций любого типа?

Я очистил все поля, которые позволяют пользователю вводить, а также использовать подготовленные инструкции mysqli для вставки в базу данных.

Однако в моей форме есть три раскрывающихся списка, и мне было интересно, нужно ли мне что-то делать с ними?

Related of "Выпадающие поля выбора уязвимы для любого типа инъекций"

Каждый элемент веб-сайта может быть изменен злоумышленником (скрытые поля, divs, styles, ajax calls, вы называете это …).

Тем не менее, если вы уже используете подготовленные заявления, вы не должны слишком беспокоиться о SQL Injection, потому что mysql уже знает, какие инструкции будут выполняться.

Вместо этого вы должны дезинфицировать весь вывод, который отображается на веб-сайте.

Предположим, что в вашей форме вы спрашиваете, в какой стране я живу таким образом:

<select name="country"> <option value="Mexico">Mexico</option> <option value="USA">USA</option> <option value="Canada">Canada</option> </select> 

но я злонамеренный пользователь, и я использую инспектор кода Chrome для изменения вашего HTML-кода, и я выбираю Мексику, но меняю ее значение на

<script type="text/javascript">alert("Hello World");</script>

и если вы выводите это значение на другой странице следующим образом:

  Your country is: <?=$country?> 

Тогда вы будете писать:

  Your country is: <script type="text/javascript">alert("Hello World")</script> 

и появится окно предупреждения с текстом «Hello World»,

Какой вред я могу сделать с этим вы можете задаться вопросом …

я могу делать все, что захочу, я могу украсть файлы cookie или если это значение является общедоступным (скажем, что вы показываете это значение на своей главной странице), я мог бы перенаправить ваших пользователей на другой сайт, изменить содержимое вашего сайта. все, что я хочу.

Для дезинфекции вывода ваших пользователей вы можете использовать

htmlentities

Это преобразует, например, символы < > в соответствующий код: &lt; и &gt

Злоумышленнику очень легко вводить данные в поля <select> , скрытые поля или что-то еще. Как говорит мантра, никогда не доверяйте пользовательскому вводу.

Я бы рекомендовал вам дезинформировать все данные, поступающие из ввода формы. Правда, пользователь может не иметь возможности напрямую редактировать ваше поле по умолчанию, но продуманная обработка формы, маскирующаяся под ваши права, может потенциально допускать некоторые вредоносные коды в вашем скрипте и / или базе данных, если вы не очищаете входящие данные.

Использование подготовленных инструкций и процедур санитарии в списках выбора может по-прежнему быть хорошей идеей, поскольку большинство инструментов разработчика и режимы осмотра браузера позволяют пользователям изменять значения, атрибуты и свойства элементов HTML «на лету». Злоумышленник может попробовать этот трюк с помощью элемента списка выбора.

Многие современные браузеры имеют возможность модификации источника. Так что да, любая информация о клиенте -> сервере может быть впрыском.

Но если вы используете переменные связывания для всех данных $ _POST или $ _GET, вы должны быть в порядке.

Да, используя простой Javascript в консоли браузера (что почти у всех современных браузеров), они могут изменить значение выбора на все, что захотят. Они могли бы также добавить HTML для ввода текстового поля, если они этого захотят.

И Javascript – это самый простой способ сделать это, есть множество других методов для управления переменными $ _POST для скрипта. Просто помните, что $ _POST и $ _GET являются переменными, предоставленными пользователем . Не доверяйте им вообще!

Инъекция может происходить во вводе пользователя, и они вводят строку.

В случае, когда вы используете select, вы выбираете опции, и сами знаете, что эти варианты не будут причиной инъекции.

Ну, если пользователь может определить этот вариант, они могут использовать выбор для инъекций.

Хорошая вещь, которую вы можете сделать в своих раскрывающихся списках, – использовать тот же код, который вы использовали на своих входах, чтобы предотвратить инъекции. Относитесь к тому же в каждом элементе управления, когда получите значение.