Я работаю над веб-приложением React-Redux, которое интегрируется с AWS Cognito для аутентификации пользователей/хранения данных и с помощью API Shopify, чтобы пользователи могли покупать товары через наш сайт.Защита клиентских SDK на стороне клиента
С обеих SDKs (Cognito, Shopify), я столкнулся с проблемой,: Их основная функциональность придает данные за кулисами localStorage
, требуя как SDKs для запуска на сторону клиента.
Но выполнение этого кода полностью на стороне клиента означает, что маркеры API, которые оба API требуют, абсолютно небезопасны, так что кто-то может просто взять их из моего пакета, а затем аутентифицировать/заполнить корзину/посмотреть инвентарь/что угодно из любого места (правильно?).
Я написал вопросы обоим РЕПО, чтобы указать на это. Here's the more recent one, on Shopify. Я посмотрел на similarquestions на SO, но я ничего не нашел, обращаясь к этим пользовательским SDK/укоренившимся localStorage
, и я начинаю задаваться вопросом, не пропал ли я/не понял что-то о безопасности на стороне клиента, поэтому я решил, что должен просто спросите людей, которые знают об этом больше.
Что меня интересует, является ли, абстрактно, хороший способ защитить клиентский SDK таким образом. Некоторые мысли:
Изначально я пытался прокси все запросы через сервер, но тогда
localStorage
функциональность не работает, и мне пришлось подделать его после запроса и добавить целую кучу кода, SDK разработан, чтобы заботиться. Это оказалось непомерно сложным/грязным, особенно с Cognito.Я также рассматриваю возможность создания конечной точки на стороне сервера, которая просто возвращает учетные данные и блокирует запросы из-за пределов домена. В этом случае кредиты не будут находиться в пакете , но разве они не будут в конечном итоге сканироваться кем-либо на сайте после того, как запрос на учетные данные будет выполнен?
Является ли идея, что эти секретные ключи фактически не должны быть безопасными, поскольку добавление в корзину Shopify или регистрация пользователя с приложением не обязательно должны быть безопасными действиями? Я просто обеспокоен тем, что, очевидно, я не знаю полного объема действий, которые пользователь мог бы использовать с этими учетными данными, и это кажется очевидной лучшей практикой, чтобы держать их в тайне.
Спасибо!
вы придумали какой-либо идеи? Я хочу создать sdk, но, как поставщик услуг, у меня есть те же проблемы, о которых вы говорили –