Угроза безопасности ввода HTML только для чтения?


Безопасно ли полагаться на данные поля ввода html, настроенного только для чтения? Какова цель поля только для чтения?

Я знаю, что отключенные поля не перемещаются в $_POST, в то время как только для чтения? По сути, то, что я хочу, - это динамическое значение в моей форме, которое остается неизменным для пользователя.

Было бы более уместно разместить это в сеансе или какие у меня есть варианты?

РЕДАКТИРОВАТЬ: Как упоминалось ниже, хранение этого в сеансе - лучшая идея, хотя после чтения Сохранение объектов в сеансе Меня беспокоит производительность и перегрузка сервера данными сеанса. Есть какие-нибудь предложения? Было бы безопасно просто отключить() любые данные сеанса, которые больше не нужны. (Аналогично управлению памятью, но на уровне сеанса? Удалите то, что вам не нужно.)

Author: Community, 2010-08-30

4 answers

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

Так что нет, это не очень хорошая безопасность.

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

 4
Author: Iznogood, 2010-08-30 16:45:08

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

редактировать: Iznogood прав, кто-то может изменить значения сообщений и отправить поддельный заголовок.

 4
Author: rhino, 2010-08-30 16:23:55

Нет. Небезопасно полагаться на данные поля ввода html, настроенного только для чтения. А также небезопасно полагаться на любые данные, предоставленные клиентом.
Это было бы единственным возможным решением разместить это в сеансе

 3
Author: Your Common Sense, 2010-08-30 16:30:57

С помощью Firebug вы можете легко сделать запись доступной, так что вам даже не придется подделывать запрос на публикацию, используя что-то вроде curl.

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

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

Что касается вашего второго вопроса: Данные сеанса обычно хранятся в текстовом файле на сервере. Он будет удален через некоторое неактивное время (стандартное - 24 минуты). Вас не должно волновать, насколько велики данные. Я также использовал сеанс для хранения нескольких сотен мегабайт для некоторых сценариев. Но рекомендуется отменить настройку данных формы из сеанса после того, как данные были успешно сохранены в базе данных = или на любом другом постоянном носителе). Сохранение его в сеансе также позволит вам пополнять форма, даже если пользователь не нажимает кнопку "Назад" или браузер неправильно восстанавливает данные.

 1
Author: 2ndkauboy, 2010-08-30 21:03:34