Я реализую прямую загрузку файлов с клиентского компьютера на Amazon S3 через REST API, используя только JavaScript, без какого-либо серверного кода. Все работает нормально, но меня беспокоит одно ...
Когда я отправляю запрос в Amazon S3 REST API, мне нужно подписать запрос и поставить подпись в Authentication
заголовок. Чтобы создать подпись, я должен использовать свой секретный ключ. Но все происходит на стороне клиента, поэтому секретный ключ может быть легко раскрыт из источника страницы (даже если я замаскирую / зашифрую свои источники).
Как я могу справиться с этим? И это вообще проблема? Может быть, я могу ограничить использование определенного закрытого ключа только вызовами API REST из определенного источника CORS и только методами PUT и POST или, возможно, связать ключ только с S3 и конкретным сегментом? Может быть есть другие способы аутентификации?
«Безсерверное» решение является идеальным, но я могу рассмотреть возможность использования некоторой обработки на стороне сервера, за исключением загрузки файла на мой сервер и последующей отправки на S3.