Проблемы безопасности и аутентификации SproutCore - PullRequest
4 голосов
/ 22 января 2011

Я пытался немного узнать о SproutCore , следуя учебному пособию "Todos", и у меня есть пара вопросов, которые не удалось найти в Интернете.

  1. SproutCore должен перенести всю бизнес-логику на клиент. Как это не небезопасно? Злонамеренный пользователь может легко изменить код (поскольку он все на клиенте) и изменить поведение приложения. Как я тут не прав?
  2. SproutCore использует DataStores, и некоторые из них могут быть удаленными. Как можно избежать, чтобы злоумышленник не взаимодействовал с бэкэндом самостоятельно? Использование какого-либо API-ключа не сработает, поскольку код находится на стороне клиента. Здесь есть какое-то соглашение? Есть идеи? Это действительно беспокоит меня.

Заранее спасибо!

PS: Кто-нибудь думает, Капучино - лучшая альтернатива? Я решил пойти с SproutCore, потому что документация на Cappuccino казалась довольно плохой, хотя SproutCore не улучшается.

1 Ответ

6 голосов
/ 22 января 2011

Ян

Ваши опасения действительны.Дело в том, что они применяются ко всему клиентскому коду, независимо от того, какая структура.Итак:

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

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

Все веб-приложения должны делать это.

В отношениипроблема «взаимодействия с серверной частью»: опять же, все веб-приложения имеют эту проблему.Вы можете открыть firebug / webkit и просмотреть все запросы xhr, которые RIA используют в своих операциях, и имитировать их, чтобы попытаться что-то сделать в этой системе.Опять же, эта проблема решается проверками аутентификации / авторизации, которые вы должны реализовать.Любой может использовать любой веб-клиент для отправки запроса на сервер.Разработчик должен проверить этот запрос.

Источники данных в SproutCore - это просто абстракция о том, как приложения SC взаимодействуют с сервером.В конце концов, однако, все, что SC делает, - это делает XHR-запросы к серверу, как и любая другая RIA.

...