2014-11-19 2 views
2

Это общий вопрос.Запретить пользователю изменять идентификатор перед обновлением в WebApps

У меня есть сомнения в отношении идентификаторов в операциях CRUD и других действиях, в которых должен быть отправлен идентификатор.

Я имею в виду, что независимо от того, какая технология используется, результатом будет html-форма, в которой идентификатор будет находиться во входном поле внутри формы (возможно, из-за тусклой, скрытой, но всегда присутствует). Учитывая этот способ, пользователь может модифицировать entityId с помощью firebug (например) и отправить форму с другим идентификатором, это позволит пользователю обновлять или даже удалять запись, которая не была оригинальной.

<form> 
    <input id="entityId" type="hidden"/> 
    <input id="someName" type="button"/> 
</form> 

Как я могу справиться с этой ситуацией? Первым решением, которое я пытаюсь сделать, является select by userId и entityId, поэтому я могу позволить пользователю обновлять только свои собственные записи, НО он все равно может изменить идентификатор и внести изменения в другие записи, принадлежащие ему.

Как я могу ограничить больше пользователя внесением изменений только в записи, показанной веб-приложением?

Заранее спасибо

+0

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

+1

Вам нужно проверить, что представленные значения действительны, и у них есть разрешение на их изменение. –

+0

@AndrewBarber. Я думаю, OP знает об этом и спрашивает, как –

ответ

0

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

Использование

request.getSession().setAttribute(name, value); 

, чтобы установить его, и

request.getSession().getAttribute(name); 

читать.

Таким образом, это не может быть подделано.

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

+0

Это общий вопрос, а как, если бэкэнд является веб-сервисом для отдыха ?. И если я не буду отправлять имя пользователя, что я могу сделать, если имя не уникально? – UserMan

Смежные вопросы