2014-01-27 6 views
1

Мое название, вероятно, нечеткое, поэтому, пожалуйста, проверьте мою ситуацию ниже.Принудительные/защитные параметры POST

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

Приложение использует HTTPS. Список сотрудников и данные извлекаются с помощью GET, в то время как информация обновляется через POST. Приложение использует HTTPS, и все пользователи (есть только некоторые из нас) имеют право на получение и обновление сведений о сотрудниках.

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

Так что, в моем случае, вы бы все же считали необходимым обеспечить механизм, чтобы обновляемая только текущая запись была обновлена? Если да, то какова принятая практика для реализации этого? Спасибо

ответ

2

Многие веб-системы предназначены для безгражданства. Основная причина заключается в том, чтобы разрешить несколько сеансов/окон.

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

Таким образом, вместо этого просто выполните правила на сервере, и если у них есть разрешение на редактирование этого сотрудника, позвольте им.

Убедитесь, что ваша система использует HTTPS, чтобы предотвратить атаку в середине атаки, избегая всех выходных данных, чтобы предотвратить межсайтовый скриптинг (XSS), а также требовать POST для всех обновлений, а также использовать сеансы и формальные маркеры для предотвращения запроса на межсайтовый сайт подделка (CSRF). Как только вы это сделаете, любая манипуляция с идентификатором сотрудника, скорее всего, будет нанесена самим себе, и ваша задача не защищать пользователя от самих себя.

+0

Спасибо, Маркус!Вы четко описали сценарии с несколькими сеансами, которые я не рассматривал. Я буду следовать вашему предложению и сосредоточиться на безопасности на стороне сервера, которую мы можем контролировать. Спасибо за другие предложения по обеспечению безопасности браузера, особенно CSRF, которая также нова для меня. – alds

0

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

+0

Спасибо за ваш вход Thrash Bean. Вы хорошо спрятали удостоверение личности. Но все же, даже если идентификатор скрыт, он все равно может быть изменен до POST, и сервер будет считать его действительным POST. Таким образом, реализация (например, пользовательский интерфейс) терпит неудачу, но бизнес-правила выполнены (т. Е. Любой пользователь может обновить любую запись). Я надеюсь, что кто-то может обеспечить ситуацию, когда защита/форсирование идентификатора является ДОЛЖНЫ или, возможно, совсем нет, поскольку действия пользователя неконтролируемы и непредсказуемы. – alds

+0

Как можно изменить идентификатор? Редактирование источника страницы? Так взломать. Параноик - перед отправкой данных обратно в хэш-код браузера ID и при повторной передаче идентификатора снова и проверьте valididy. Если не равно - не сохраняйте измененную запись. Конечно, это немного глупо. И не нужно «перефразировать» публикацию, я не думаю, что кто-то изменит хэшированные данные. –

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