Ввод HTML только для безопасности? - PullRequest
4 голосов
/ 30 августа 2010

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 30 августа 2010

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

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

4 голосов
/ 30 августа 2010

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

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

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

3 голосов
/ 30 августа 2010

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

1 голос
/ 31 августа 2010

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

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

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

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

...