Веб-приложения: Хранение идентификатора в скрытых безопасных полях?

У меня просто была эта мысль, я не знаю, являюсь ли я медленным все же.

Обычно, я храню идентификатор объекта, который я редактирую в скрытом поле. Затем в бэкенде (я использую Платформу PHP/Zend btw), я заставляю ее определять, какой объект редактируется. Но затем я думал, в чем-то более безопасном, например, изменил профиль, пользователь может так или иначе отредактировать скрытое право поля? Затем он может изменить чужой профиль. Я знаю для, изменяют профиль, я могу добраться, идентификатор формируют переменную сеанса, но что, если я получил что-то, что требует, чтобы я сохранил идентификатор где-нибудь?

Я получил ACL (Zend_Acl), я делаю это. В основном захватите идентификатор от параметрических усилителей запроса

$id = $req->getParam('id');

затем проверьте, разрешают ли зарегистрированному пользователю отредактировать объект. Но вещь, интересно, является ли URL чем-то как /users/edit/1 где 1 идентификатор. Но так или иначе, скрытое поле изменяется на 2, каков параметрический усилитель запроса будет?

Как Вы имели бы дело с этим?

6
задан kiamlaluno 5 August 2010 в 13:58
поделиться

5 ответов

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

10
ответ дан 9 December 2019 в 20:38
поделиться

Хранение ID в скрытом значении не совсем безопасно. Обычно мы храним ID в переменной сессии.

1
ответ дан 9 December 2019 в 20:38
поделиться

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

Вы должны убедиться, что все управление доступом осуществляется сервером.

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

1
ответ дан 9 December 2019 в 20:38
поделиться

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

0
ответ дан 9 December 2019 в 20:38
поделиться

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

0
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: