Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Приёмы проверки идентификаторов, пришедших от клиента / 25 сообщений из 34, страница 1 из 2
31.01.2015, 23:31
    #38868622
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Клиент постит форму. Примитивная валидация (клиентская, затем серверная), то есть проверка диапазонов чисел, длин строк и т.п. - прошла.

Далее надо проверить Id объектов. К примеру, юзер выбирает что-то из списка, причем этот список для него выводится не весь (ограничен его правами или текущим контекстом). Но надо проверить, не подменил ли злоумышленник Id объекта в POST-запросе, чтобы получить недоступный ему элемент. То есть это уровень проверки, затрагивающий DAL в большинстве случаев.

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

ЗЫ: использую EF для доступа к данным
...
Рейтинг: 0 / 0
01.02.2015, 00:01
    #38868629
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.Pro,
ну вы когда формируете для показа список Вы же руководствуетесь чем то?, вот на примере этого руководства
и проверяйте, разрешено ли ему получать или нет.
может и не слой, можно поставщика сделать поверх
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 static  class Deliver<T>
   {
       public static IEnumerable<T> GetObjects(User user) 
       public static T GetObject(User user, int id)
       {
           if (!Validate(user,id))
               return default(T);
           else
               ..................
       }   
       private static bool Validate(User user,int id)
       private static bool Validate(User)
   }
...
Рейтинг: 0 / 0
01.02.2015, 13:11
    #38868706
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.ProКлиент постит форму. Примитивная валидация (клиентская, затем серверная), то есть проверка диапазонов чисел, длин строк и т.п. - прошла.

Далее надо проверить Id объектов. К примеру, юзер выбирает что-то из списка, причем этот список для него выводится не весь (ограничен его правами или текущим контекстом). Но надо проверить, не подменил ли злоумышленник Id объекта в POST-запросе, чтобы получить недоступный ему элемент. То есть это уровень проверки, затрагивающий DAL в большинстве случаев.

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

ЗЫ: использую EF для доступа к данным

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

Другое дело, когда всю валидацию отдают на откуп бизнес-логике, она плюётся исключениями, в контроллере эти исключения отлавливаются, расшифровываются и отправляются клиенту. Это очень плохой, отвратительный сценарий, недопустимый в адекватном проекте. Это наивная и дешёвая попытка сэкономить на кодинге, поэтому сразу советую исключить из рассмотрения подобные подходы с «централизованной валидации».
...
Рейтинг: 0 / 0
01.02.2015, 13:33
    #38868710
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
hVosttДругое дело, когда всю валидацию отдают на откуп бизнес-логике, она плюётся исключениями, в контроллере эти исключения отлавливаются, расшифровываются и отправляются клиенту. Это очень плохой, отвратительный сценарий, недопустимый в адекватном проекте. Это наивная и дешёвая попытка сэкономить на кодинге, поэтому сразу советую исключить из рассмотрения подобные подходы с «централизованной валидации».Но уровень контроллер/вью ничего не знает о DAL-е, он делает валидацию только того, что он может сделать без DAL-а, то есть полноценной проверки там нет.

Бизнес-логика делает серьезную проверку с привлечением DAL-а. При этом, ты говоришь о том, что бизнес-логика должна валидировать повторно такие вещи, как, например, допустимая длина строкового поля.

Думаю, тут все-таки есть место для спора о том, зачем тогда валидировать на уровне контроллера/вью? Ок, механизм выплевывания исключений при ошибках валидации я тоже не поддерживаю, но бизнес-модель так или иначе возвращает стандартные ошибки валидации типа "такое название папки уже существует, выберите другое название". Она также может вернуть и ошибку длины строки.

============================================================

Впрочем, мой вопрос был не об этом.

Вот пришли данные в бизнес-слой. Прежде, чем я отдам в DAL набор данных для записи в базу, надо проверить валидность некоторых Id (тех, которые DAL сочтет допустимыми, так как они не нарушат ссылочную целостность, но неприемлемы по бизнес-соображениям и это уровень компетенции бизнес-модели, а не DAL).

Так вот, собственно, может есть какие-то приемы унификации таких проверок.
...
Рейтинг: 0 / 0
01.02.2015, 13:36
    #38868713
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Мы в слое бизнес-логики проверяем права пользователя на тот, или иной функционал. Данные могут быть и не подхачены, а тупо уже не актуальны, или админ изменил права пользователя.

Также есть защита от умышленного хака данных. Перд отправкой на клиента дополнительно шифруем чать того, что отправляем, а при получении ответа от клиента сверяем.
...
Рейтинг: 0 / 0
01.02.2015, 13:38
    #38868714
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.ProВпрочем, мой вопрос был не об этом.

Вот пришли данные в бизнес-слой. Прежде, чем я отдам в DAL набор данных для записи в базу, надо проверить валидность некоторых Id (тех, которые DAL сочтет допустимыми, так как они не нарушат ссылочную целостность, но неприемлемы по бизнес-соображениям и это уровень компетенции бизнес-модели, а не DAL).

Так вот, собственно, может есть какие-то приемы унификации таких проверок.О какой валидности речь? :) Права, или что?
...
Рейтинг: 0 / 0
01.02.2015, 13:40
    #38868716
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.Pro, "бизнес-соображения" обычно можно простым человеческим языком описать. Так опишите, не ходите вокруг да около.
...
Рейтинг: 0 / 0
01.02.2015, 14:05
    #38868723
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
skyANAО какой валидности речь? :) Права, или что? .... "бизнес-соображения" обычно можно простым человеческим языком описать. Так опишите, не ходите вокруг да около.Права в частности.

Допустим пользователь меняет статус документа. Он может иметь права установить тот или иной статус. Также некоторые статусы не могут устанавливаться для документа, находящегося в определенном состоянии (к примеру, статус "к оплате", если документ имеет признак "удален", или владелец документа не совпадает с текущим пользователем). Другой пример - рядовой сотрудник не может отправить сообщению директору, но может коллеге или непосредственному начальнику.

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

Я не пытаюсь получить какой-то конкретный ответ на какой-то конкретный вопрос. Скорее, расспрашиваю о приемах, которыми вы пользуетесь.
...
Рейтинг: 0 / 0
01.02.2015, 14:21
    #38868729
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.Pro,

Всё зависит от объектной модели.

Если уборщица отправляет пронзительный мессадж директору, то на первый взгляд объекты таковы:
1. Отправитель.
2. Сообщение.
3. Адресат.

Воооот, а на самом деле - стоит ввести еще один слой и тогда объекты будут выглядет так:
1. Автор операции.
2. Операция отправки сообщения.
3. Цели операции.

И вот сама-то операция не является собственно сообщением. Сообщение создаться на её основании уже на сервере, и после того, как:
1. Пройдет проверки.
2. Сервер посчитает - когда ЛУЧШЕ отправить сообщение.
3. Поставит сообщение в очередь, чтобы не досаждать директору

и т.п.


Рутинные операции - вовсе не рутинные, если не принимать клиенсткий ввод инфы как основную доменную модель. Это просто ввод клиента, и ситуация такова, что он может ввести всё что хочет.
...
Рейтинг: 0 / 0
01.02.2015, 14:24
    #38868731
Monochromatique
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Другой вариант - попроще.

Любой возможный клиенсткий ввод - хешировать. На сервере. С солью.

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

А как хеш рассчитывается - клиент не знает.

Это даже проще. Наверное.
...
Рейтинг: 0 / 0
01.02.2015, 14:32
    #38868736
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
MonochromatiqueДругой вариант - попроще.

Любой возможный клиенсткий ввод - хешировать. На сервере. С солью.Нет, плохая идея. Как минимум потому, что состояние может устаревать (пока юзер думал надо сменой статуса, кто-то уже удалил документ)
...
Рейтинг: 0 / 0
01.02.2015, 14:44
    #38868740
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.ProskyANAО какой валидности речь? :) Права, или что? .... "бизнес-соображения" обычно можно простым человеческим языком описать. Так опишите, не ходите вокруг да около.Права в частности.

Допустим пользователь меняет статус документа. Он может иметь права установить тот или иной статус. Также некоторые статусы не могут устанавливаться для документа, находящегося в определенном состоянии (к примеру, статус "к оплате", если документ имеет признак "удален", или владелец документа не совпадает с текущим пользователем). Другой пример - рядовой сотрудник не может отправить сообщению директору, но может коллеге или непосредственному начальнику.

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

Я не пытаюсь получить какой-то конкретный ответ на какой-то конкретный вопрос. Скорее, расспрашиваю о приемах, которыми вы пользуетесь.О приёмах. Ну приём следующий:

- есть набор различных фукнциональностей (features), доступ к которым надо проверять;
- соотвественно у каждой функциональности есть политика доступа (access policy);
- она представляет собой набор правил (access rules) и тип проверки этих правил: allowIfAny, или denyIfAny;
- правило состоит из аспектов (security aspects), и если все аспекты выполняются, то и само правило выполняется, иначе правило нарушено.

И есть SecurityService, что знает обо всём наборе функциональностей и политик доступа к ним, и может тупо ответить на вопрос: "А доступен ли данный функционал в текущем контексте?".
Код: c#
1.
2.
var securityService = F.Get<ISecurityService>();
var accessGranted = securityService.IsAccessGranted(FeatureKey.DocumentChangeStatus, context);
...
Рейтинг: 0 / 0
01.02.2015, 14:53
    #38868742
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Но переходы статусов ИМХО не к безопасности (security) относятся, а к validation, или к workflow. К безопасности относится то, может-ли пользователь в принципе изменить статус документа.
...
Рейтинг: 0 / 0
01.02.2015, 14:58
    #38868744
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Пример в виде XML:
Код: xml
1.
2.
3.
4.
5.
6.
<feature key="DocumentChangeStatus">
  <accessPolicy type="allowIfAny">
    <accessRule identityRole="Administrator" />
    <accessRule identityRole="Manager" specialCase="DocumentOwner" />
  </accessPolicy>
</feature>


То есть админ может сменить статус, а менеджер только в том случае, если он владелец документа.
...
Рейтинг: 0 / 0
01.02.2015, 15:00
    #38868745
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
skyANAИ есть SecurityServiceskyANAНо переходы статусов ИМХО не к безопасности (security) относятся, а к validation, или к workflow. К безопасности относится то, может-ли пользователь в принципе изменить статус документа.Ага. Вот и хочется похоже, в каком-то обобщенном виде организовать такие проверки...
...
Рейтинг: 0 / 0
01.02.2015, 15:03
    #38868747
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.Pro,

если кто то может менять ИД чего то, то он может и ИД клиента
...
Рейтинг: 0 / 0
01.02.2015, 15:18
    #38868754
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.ProskyANAИ есть SecurityServiceskyANAНо переходы статусов ИМХО не к безопасности (security) относятся, а к validation, или к workflow. К безопасности относится то, может-ли пользователь в принципе изменить статус документа.Ага. Вот и хочется похоже, в каком-то обобщенном виде организовать такие проверки...Гы. Ну обобщите security, validation и workflow в functionality :) Только в чём смысл?
...
Рейтинг: 0 / 0
01.02.2015, 15:18
    #38868755
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
ViPRosесли кто то может менять ИД чего то, то он может и ИД клиентас чего вдруг? Пользователь-то авторизован, это проверяется в первую очередь.
...
Рейтинг: 0 / 0
01.02.2015, 15:22
    #38868756
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.Pro,

если авторизован то нечего и проверять
авторизация и подразумевает валидность дальнейших действий
...
Рейтинг: 0 / 0
01.02.2015, 15:39
    #38868757
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
опять перепутали авторизацию с аутентификацией?
...
Рейтинг: 0 / 0
01.02.2015, 15:51
    #38868762
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Изопропилопять перепутали авторизацию с аутентификацией?виноват, но почему опять? )

тем не менее, авторизация пользователя может быть также выполнена, но недопустимые операции - это все-таки не совсем авторизация )
...
Рейтинг: 0 / 0
01.02.2015, 15:56
    #38868763
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.Proно почему опять? )
это регулярное явление на форумах
...
Рейтинг: 0 / 0
01.02.2015, 16:00
    #38868766
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
Shocker.ProИзопропилопять перепутали авторизацию с аутентификацией?виноват, но почему опять? )

тем не менее, авторизация пользователя может быть также выполнена, но недопустимые операции - это все-таки не совсем авторизация )Хм. А что же это такое?

Авторизация (от англ. authorization — разрешение, уполномочивание) — предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки (подтверждения) данных прав при попытке выполнения этих действий. Часто можно услышать выражение, что какой-то человек «авторизован» для выполнения данной операции — это значит, что он имеет на неё право.
...
Рейтинг: 0 / 0
01.02.2015, 16:11
    #38868769
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
skyANA,

коллега, похоже, имеет ввиду ситуацию, когда лицо разрешение на операцию имеет,
но выполнению операции препятствуют несвязанные с полномочиями ограничения
...
Рейтинг: 0 / 0
01.02.2015, 16:29
    #38868772
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Приёмы проверки идентификаторов, пришедших от клиента
ИзопропилskyANA,

коллега, похоже, имеет ввиду ситуацию, когда лицо разрешение на операцию имеет,
но выполнению операции препятствуют несвязанные с полномочиями ограниченияи при этом он хочет "несвязанные с полномочиями ограничения" обощить и тем самым получить "не совсем авторизацию" :)

ИМХО не надо к этому стремиться.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Приёмы проверки идентификаторов, пришедших от клиента / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]