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

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

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

ЗЫ: использую EF для доступа к данным
...
Рейтинг: 0 / 0
Приёмы проверки идентификаторов, пришедших от клиента
    #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
Приёмы проверки идентификаторов, пришедших от клиента
    #38868706
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProКлиент постит форму. Примитивная валидация (клиентская, затем серверная), то есть проверка диапазонов чисел, длин строк и т.п. - прошла.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

и т.п.


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

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

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

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

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

Любой возможный клиенсткий ввод - хешировать. На сервере. С солью.Нет, плохая идея. Как минимум потому, что состояние может устаревать (пока юзер думал надо сменой статуса, кто-то уже удалил документ)
...
Рейтинг: 0 / 0
Приёмы проверки идентификаторов, пришедших от клиента
    #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
Приёмы проверки идентификаторов, пришедших от клиента
    #38868742
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но переходы статусов ИМХО не к безопасности (security) относятся, а к validation, или к workflow. К безопасности относится то, может-ли пользователь в принципе изменить статус документа.
...
Рейтинг: 0 / 0
Приёмы проверки идентификаторов, пришедших от клиента
    #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
Приёмы проверки идентификаторов, пришедших от клиента
    #38868745
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAИ есть SecurityServiceskyANAНо переходы статусов ИМХО не к безопасности (security) относятся, а к validation, или к workflow. К безопасности относится то, может-ли пользователь в принципе изменить статус документа.Ага. Вот и хочется похоже, в каком-то обобщенном виде организовать такие проверки...
...
Рейтинг: 0 / 0
Приёмы проверки идентификаторов, пришедших от клиента
    #38868747
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

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

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

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

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

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

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

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

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


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