Защита ASP .Net Web API для использования с мобильным приложением
В настоящее время я использую авторизацию на основе токенов через OWIN, чтобы мои API не были доступны всем. Однако у этого метода есть недостаток. Получив токен, пользователь может получить доступ к любому API через мой веб-сайт и получить ответ на любые опубликованные параметры; что опасно в моем случае.
Сейчас мне нужно предоставить API-доступ к моему мобильному приложению, но я хочу усилить безопасность своих API-интерфейсов таким образом, чтобы запросы фильтровались на основе доступа пользователей.
Вариант использования: я генерирую токен, когда пользователь входит в систему и добавляет его при каждом запросе к API. Он работает абсолютно нормально, но... сгенерированный токен может быть использован для получения сведений о любом другом пользователе.
Чего я хочу добиться: я хочу предотвратить возникновение вышеуказанного случая. Я хочу отфильтровать недопустимые запросы / ответы к / от API.
Как мне это сделать? Как мобильные приложения обычно ограничивают доступ пользователей к их API. Мне очень интересно об этом знать. Пожалуйста, ведите меня.
1 ответ
То, что вы реализовали до сих пор, является лишь частью аутентификации, она не сильно поможет вам в защите вашего сайта, для обеспечения безопасности должным образом вам также необходимо выполнить надлежащую авторизацию.
Для этого вам необходимо реализовать следующие вещи.
RBAC - управление доступом на основе ролей в ваших действиях веб-API. Это достигается с помощью фильтра авторизации по умолчанию, предоставляемого платформой.
Например
[Authorize(Roles = "Administrator")]
public void DoSomething()
{
}
Если вы используете OWIN, вы можете установить роли в GrantResourceOwnerCredentials
метод как следующий
identity.AddClaim(new Claim(ClaimTypes.Role, "Administrator"));
Безопасность на уровне данных: это очень важно, поскольку люди, принадлежащие к одной роли, могут получить доступ только к набору данных, для реализации этого типа безопасности лучшим местом будет ваша база данных. Вы можете внедрить Row Level Security/Cell Level Security в свою базу данных или можете ограничить доступ к данным на основе зарегистрированного пользователя из вашей базы данных напрямую.
Внедрение безопасности на уровне данных не является простым делом, поскольку оно определяется требованиями вашего бизнеса (кто и к чему может получить доступ). Из коробки ни одна инфраструктура не сможет дать вам полное решение, вам нужно только внедрять правила самостоятельно.
Помимо вышеупомянутых двух пунктов, вы также можете рассмотреть возможность подделки межсайтовых запросов (CSRF) и целостности данных между сервером и клиентом.