Веб-приложения: хранение идентификатора в скрытых полях безопасно? - PullRequest
6 голосов
/ 05 августа 2010

У меня только что была такая мысль, я не знаю, медленно ли я, хотя.

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

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

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

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

Как бы вы справились с этим?

Ответы [ 5 ]

10 голосов
/ 05 августа 2010

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

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

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

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

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

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

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

0 голосов
/ 05 августа 2010

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

0 голосов
/ 05 августа 2010

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

...