2010-08-31 3 views
1

Я хотел бы иметь отображение пользователей на счета, а затем пользователи, направленные на имен, соответствующих их счет.Безопасного использование GAE приложение имена

Взглянув на appengine_config.py из suggested example, там, кажется, несколько предлагаемых способов определить, что пространство имен должно быть, т.е.

  1. имя сервера
  2. Служб Google домена
  3. Cookie

Я бы хотел, чтобы пространство имен было выбрано на основе поиска в хранилище данных. т.е.

namespace = user.account.name 

В течение некоторого user объекта, который связан с account, на счету которого имеет name поле. Там область несколько способов, я положенный выполнить это:

  1. датастор поиска по каждому запросу
  2. поиска по кэшу памяти каждого запросу (возврат к DATASTORE, когда истекает Memcache)
  3. безопасных данные печений

Поиск хранилища данных будет медленным. Есть ли такая резервация с поиском memcache? например memcache.get('nslookup:%s' % user_id), с учетом user_id. (Я уверен, что объект users работает, как и ожидалось, в appengine_config.py).

В качестве альтернативы, для решения этой проблемы можно использовать безопасный файл cookie. Я не удовлетворен безопасностью флага «Безопасный» (то есть форсированием SSL). Однако я не уверен, как лучше всего защитить данные в cookie. Я полагаю, что симметричный encryption с подписанием с PyCrypto с использованием секретного ключа в GAE является одним из способов начать работу по этому пути. Хотя этот шаблон был vetted, я был бы признателен за любые мысли по этому предлагаемому решению в частности.

Безопасное печенье не кажется лучшим маршрутом с идеальной точки зрения; Я уже ожидаю иметь идентификатор пользователя, все, что мне нужно, - это сопоставление от пользователя к их учетной записи - нет логической основы для шифрования, отправки, хранения, получения и дешифрования этого сопоставления при каждом запросе. Параметры memcache кажутся лучшими из трех, но я был бы благодарен за мысли и вклад. Единственная причина, по которой я могу использовать безопасные файлы cookie, - это производительность, или, альтернативно, если доступ к memcache был недоступен в appengine_config.py.

Мысль и вклад в мои предположения приветствуются.

Благодарим вас за чтение.

Brian

+0

Что вы используете для поиска записи в хранилище данных? И какое пространство имен есть _that_ запись? Кроме того, вы уверены, что каждый пользователь должен получить доступ к своим собственным данным? Если пользователи обычно читают или записывают данные, доступные другим пользователям, пространство имен для каждого пользователя может быть не лучшим вариантом. –

+0

@Nick Johnson: Я еще не решил, что использовать для поиска записи в хранилище данных (предполагая, что это будет так, как я предполагаю); он должен быть в пространстве имен «master». Пространства имен не предназначены для каждого пользователя, а для каждой учетной записи (т. Е. Наборов пользователей). Доступ через кросс-аккаунт будет обрабатываться прокси-запросами. –

+0

Мое мнение состояло в том, что если у вас есть способ создать ключ для поиска записи в хранилище данных, вы можете просто использовать это значение в качестве имени пространства имен вместо того, чтобы выполнять поиск. И «прокси-запросы», надеюсь, вы не имеете в виду делать запрос к себе, используя urlfetch - вместо этого вы можете просто изменить пространство имен по умолчанию внутри запроса! –

ответ

1

С точки зрения производительности, ничего такого, что позволяет избежать необходимости Memcache или хранилища данных выборок по каждому запрос будет лучшим вариантом. Вы смешиваете два определения «безопасного» файла cookie: флажок «secure» в спецификации cookie указывает, что cookie отправляется только через SSL, в то время как в другом смысле «безопасный» cookie - это тот, который нельзя изменить пользователем, что является самым важным в этом случае использования.

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

1

Я думаю, что безопасные куки путь, потому что они достаточно быстро.Базовая реализация извлечена из Tornado здесь (нужно просто класс SecureCookie и может игнорировать «сеанса» материал):

http://code.google.com/p/webapp-improved/source/browse/extras/sessions.py#104

+0

Спасибо за ответ. Я определенно считаю, что безопасное куки - это канонический способ сделать это. –

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