Вы когда-нибудь были в буфете и брали еду с подноса, только чтобы обнаружить, что это было не то, что вы ожидали? Возможно, вы думали, что берете в руки кусок декадентского шоколадного торта, но на самом деле это был печеночный паштет. Работа с пользовательским вводом в веб-разработке чем-то похожа на такого рода сюрпризы.
Что такое пользовательский ввод?
Пользовательский ввод — это любая информация или данные, поступающие непосредственно от пользователя. Это может быть текст, введенный в поле формы на веб-странице, файл, загруженный пользователем, или даже URL-адрес, введенный в адресную строку браузера.
Будучи младшим специалистом в области кибербезопасности или даже просто веб-разработки, вы должны усвоить одно из первых золотых правил: Никогда не доверяйте вводу данных пользователем. Это все равно, что принять кусок торта от вашего озорного младшего брата — лучше сначала осмотреть его на наличие скрытого острого соуса!
Опасности доверия пользовательскому вводу
Доверять пользовательскому вводу без проверки или дезинфекции — все равно, что оставлять входную дверь открытой, пока вы в отпуске, надеясь, что никто не войдет и не поможет себе. Это открытое приглашение к неприятностям.
Давайте проиллюстрируем это на простом коде JavaScript. Здесь у нас есть базовая форма, которая принимает имя пользователя, а затем отображает приветственное сообщение с использованием этого ввода:
let userName = document.querySelector('#username').value; let welcomeMessage = `Hello, ${userName}!`;
Это кажется безобидным, верно? Но что произойдет, если недобросовестный пользователь решит ввести что-то вроде:
<script> stealYourData(); </script>
Если вы слепо доверяете введенным данным и отображаете их на своем сайте, вы на самом деле запускаете их вредоносный код JavaScript! Это классический пример атаки с использованием межсайтовых сценариев (XSS).
Итак, как нам защитить себя?
Ответ заключается в проверке и очистке пользовательского ввода. Проверка гарантирует, что ввод соответствует определенным критериям, таким как определенный тип данных, определенная длина или соответствие определенному формату. Санитарная обработка включает в себя очистку входа…