2016-07-25 1 views
0

Я создаю своеобразное социальное приложение с концепцией «друзей», где друзья могут делать действия относительно одного или нескольких своих друзей, Я бы предпочел не спрашивать БД, если дружба существует каждый раз, когда кто-то посылает какие-либо запрос на действие. Идея, которую я придумал, - после одобрения дружбы, будет отправлена ​​цифровая подпись каждому пользователю, который может быть проверен на сервере для каждого запроса, который должен стоить меньше, чем запрашивать db. Тогда я могу изменить асинхронный ключ каждый день или так, и заставить пользователя запросить новую цифровую подпись, и в этом случае я подхожу к db для проверки дружбы (это хорошо для безопасности, но также обязательно, если пользователи хотят отменить дружбу) ,Дайте цифровую подпись после запроса друга на использование после того, как подтвердить дружбу в социальных приложениях?

Что я прошу, если это ужасная идея? Может быть, я ничего не вижу. Или просто любая ссылка на любую информацию об этих сценариях будет отличной.

+0

С другой стороны, я прочитал дополнительную информацию об использовании криптографических методов вместо вызовов db. Я до сих пор ничего не нашел относительно моего использования. Тем не менее я убедился, что было бы лучше отправить ограничение времени в подписи дружбы, которая будет представлена ​​до тех пор, пока подпись не будет действительной, вместо того, чтобы менять ключ криптозащиты. –

ответ

1

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

Давайте продолжим с идеей, что это действительно хорошая идея. Вам понадобится маркер, который имеет информацию о том, кто ваши друзья, и он должен быть проверен сервером. Для меня это похоже на то, что вы можете использовать JSON Webtoken (JWT).

Here is the basics on JWTs.

JWTs состоит из трех частей: Заголовок, полезная нагрузка и подпись. Заголовок определяет, как долго будет действовать токен, а полезная нагрузка может содержать список друзей (или идентификаторы друзей). Подпись - это хеш всей вещи, подписанный с закрытым ключом сервера, таким образом проверяя, что сервер одобрил этот токен как действительный до момента времени X. Вся вещь кодируется перед отправкой.

Вы отправили бы JWT в HTTP-заголовке какого-то рода, возможно, в заголовок Authorization. Затем сервер мог быстро декодировать JWT (для этого есть множество библиотек на многих языках, JWT - довольно хороший стандарт), и поэтому не нужно запрашивать базу данных. Размер JWT действительно нужно отправить, и, таким образом, я не уверен, что вы действительно получите какую-либо скорость от этого.

+0

Спасибо. Я думаю, что использование JWT принесет пользу мне. Одна из причин заключается в том, что я могу отделить серверы, которые обрабатывают чат и другие действия между друзьями с серверов, которые обрабатывают выпуск дружеских отношений. Таким образом, я могу масштабировать свой db соответственно. Я могу сделать то же самое для сессий с помощью jwt, тогда я могу игнорировать db все вместе на этих серверах. –

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