2015-03-18 2 views
0

Я угловатый noob. В приложении, которое я взял, есть объект в области, который определяет роль текущего пользователя (например, user.role=REGULAR).Как защитить объекты области видимости?

Есть ли способ удержать пользователя от открытия firebug и изменения user.role=ADMIN?

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

+4

Не полагайтесь на клиентскую сторону для получения разрешений/доступа. –

ответ

2

Невозможно сделать это. У вашего дизайна есть фундаментальная проблема; он полагается на проверку на стороне клиента.

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

Важнейшим правилом является то, что как только он покидает сервер и ударяет по клиенту, его из-под контроля. Предположим, что он скомпрометирован, предположите, что он не заслуживает доверия, и предположим, что вам нужно все проверить.

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

+0

Спасибо, я понимаю. Существует ли стандартный способ предоставления опций (вкладки и т. Д.), Которые скрывают их и могут ли они скрыть их? Я думаю о том, что у меня есть совершенно разные взгляды, но тогда мне понадобится представление для каждой комбинации ролей. Я предполагаю, что есть лучший способ? – eze

+1

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

1

Ну, вы можете попытаться скрыть объект внутри крышки или использовать Object.freeze в браузерах, которые его поддерживают, однако не обойти тот факт, что код отправляется и выполняется на клиенте. Даже если существует надежный способ предотвращения модификации (чего нет), клиент мог бы изменить полезную нагрузку в Fiddler или что-то еще до того, как он достиг браузера.

Имея это в виду, вы не можете доверять ничего на клиенте для доступа/авторизации; вы должны проверить это на сервере или у вас будут дыры/риски безопасности.

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