#json #security #web #url #encryption
Вопрос:
Представьте себе приложение со списком дел, в котором мы пытаемся создать функцию общего доступа. Этот конкретный список содержит следующие данные, которые должны быть включены в URL-адрес для совместного использования.
- Идентификатор списка (строка 20 символов)
- Идентификатор владельца (строка 20 символов)
- Тип владельца (короткая строка или 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. Нет простого «сделай это, и это будет идеально». Но относительно простые кодировки (например, «просто склейте вещи вместе по порядку») должны быть простыми.