Это использование скрытых полей небезопасно?

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

Прежде всего, приложение защищено через логин. Тем не менее, как только пользователь вошел в систему, во всем приложении появилось 11 страниц, на которых в скрытом поле хранится значение имени файла, а также путь для загрузки.

Javascript используется для автоматической отправки формы, а затем пользователь загружает и сохраняет файл на своем компьютере. Я думаю, что это значение может быть изменено, и пользователь невольно загрузит вредоносный файл.

Кроме того, существует множество страниц, на которых ссылающаяся страница сохраняется в скрытом поле, чтобы пользователь мог вернуться на предыдущую страницу при сохранении формы. Если это законные вопросы, как так? Как бы на них напали, если бы это было возможно? Каков уровень риска или потенциального воздействия? Причина, по которой я спрашиваю, состоит в том, чтобы я мог выдвинуть случай, когда приложение должно быть исправлено, если это так. Просто сказать, что "это не лучшая практика" - это не достаточно веская причина.

Спасибо за ваш отзыв!

3 ответа

Очень вероятно небезопасно. Скрытые поля формы - тонкость реализации.

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

Если сервер реализует контрмеры, такие как очистка входных данных, контрольные суммы, хеширование, шифрование и т. Д., Использование может быть несколько более безопасным. Например, ASP.NET делает это с ViewState.

Это сказал...

Хотите увидеть, насколько это небезопасно? Измените один из атрибутов типа ввода скрытого поля с "скрытого" на "текстовый" с помощью инструментов разработчика Chrome или Firefox и просмотрите текстовое поле (где вы можете изменить его и передать любое значение по своему усмотрению).

Я также настоятельно рекомендую прочитать ответы Мэтта на анализ потенциального риска в его ответе.

В дополнение к тому, что сказал Крис Шейн:

Каков уровень риска или потенциального воздействия? В зависимости от предположений, сделанных серверным сценарием, последствия могут быть довольно серьезными. Если скрытое поле содержит, скажем, user_id или же username и предполагалось, что эта информация была законной, тогда любой мог выполнять действия от имени кого-либо еще, просто изменяя поля формы, как объяснил Крис Шейн.

Скрытые поля - это просто проблема графического интерфейса - вы не видите их на экране, но они все еще там. Это делает их такими же уязвимыми, как и любое другое (видимое) поле. Вот почему они не считаются "лучшей практикой".

Другие вопросы по тегам