Как лучше всего зашифровать данные для обмена контентом по глубоким ссылкам или URL-адресам?

#json #security #web #url #encryption

Вопрос:

Представьте себе приложение со списком дел, в котором мы пытаемся создать функцию общего доступа. Этот конкретный список содержит следующие данные, которые должны быть включены в URL-адрес для совместного использования.

  1. Идентификатор списка (строка 20 символов)
  2. Идентификатор владельца (строка 20 символов)
  3. Тип владельца (короткая строка или int)

Эти данные могут быть отображены в формате JSON, например:

 {
  'lid': 'xxx...',
  'oid': 'xxx...',
  'type': 1,
}
 

Вопрос: Как зашифровать эти данные в защищенную строку, которая затем будет сокращена с помощью https://bitly.com/ и в конечном итоге будет расшифрован снова для доступа клиента к этому конкретному списку

В конечном счете, мы хотим поделиться URL-адресом, подобным приведенному ниже

todolistapp.com/shorturl

Заранее благодарю вас 🙏 🏻

Комментарии:

1. Ваш вопрос, похоже, сам по себе является ответом. Зашифруйте данные. Поместите его в URL-адрес в формате Base64url. Третьего шага не существует. Я, вероятно, пропустил бы шаг кодирования JSON только для того, чтобы сократить начальный URL-адрес, но в любом случае все в порядке. Есть ли что-то более глубокое в этом вопросе?

2. Спасибо за ваш ответ, я ценю это. Я подумал, что это может быть, мне интересно узнать о различных типах шифрования, и ваше предложение пропустить шаг кодирования JSON, чтобы сократить начальный URL-адрес, полезно.

3. Как его зашифровать, зависит от многого. К сожалению, трудно сказать что-то одно: «вот как вы шифруете, и это всегда будет правильно». Я создал RNCryptor, чтобы попытаться создать единственное решение «безопасно, не думая об этом слишком сильно» ( github.com/RNCryptor ). Это разумная отправная точка, но есть способы сделать вывод намного короче и быстрее для данной конкретной настройки (но это скорее проблема пользовательского криптопроекта, которую, как правило, вы получите, наняв консультанта). Для пропуска JSON я просто имею в виду, что «20 байт, 20 байт, 4 байта» короче.

4. Вы также можете, конечно, кодировать как «длина строка, длина строка, фиксированная длина-int», если ваши строки, как правило, короче 20 байт. Опять же, разработка конкретного решения-это то, что вы обычно получаете через консультанта IMO. Нет простого «сделай это, и это будет идеально». Но относительно простые кодировки (например, «просто склейте вещи вместе по порядку») должны быть простыми.