Я не думаю, что ваш подход решит какую-либо проблему, потому что хакеры могут использовать хешированные значения для поиска пользователей.
Мое предложение: Постарайтесь сохранить все данные о взаимосвязях в открытом доступе на на стороне клиента .
Что это значит?это означает, что если злоумышленник получит доступ к серверу, он не сможет получить пользователей от отношений.Это означает, что код будет намного более сложным, но более безопасным.
Как вы реализуете это?
Это просто не в моей голове, поэтому людям нужнопроанализируй это больше.Но вот быстрое решение:
1-Создать ключ из прохода пользователя: это можно сделать, например, с помощью генерации ключа PKCS5 на основе пароля.Допустим, ключ K
.Отношение пользователя 2-Encrypt поставляется на стороне клиента с K
(например, с JavaScript).затем добавьте friendship_id
к вашим данным.У вас будут такие данные:
DATA = friendship_id || ENC(user_id_2 || user_id_1 || random_nounce, K)
3-Save DATA
на сервере SQL, поэтому, когда вам понадобится дружба, вы можете найти DATA
с friendship_id
.4-Всякий раз, когда пользователь хочет увидеть список друзей, он просто расшифровывает DATA
на стороне клиента и будет иметь список идентификаторов своих друзей.Теперь он будет отправлять отдельные запросы для получения информации для этих идентификаторов пользователей.
С помощью этого метода, поскольку идентификаторы друзей пользователя зашифрованы на сервере, хакер не сможет их увидеть.
Если вы не хотитеЧто-нибудь на стороне клиента, вы можете достичь чего-то, используя процедуры магазина.Храните идентификатор пользователя друга в зашифрованном виде на сервере и используйте хранимую процедуру для их получения, передавая friendship_id
, K
от клиента.