Primeiro, codifiquei meus aws "accessKey" e "securityKey" no arquivo JS do lado do cliente, mas era muito inseguro, então li sobre "aws-cognito" e implementei o novo JS da seguinte maneira:
Ainda estou confuso com uma coisa que alguém pode invadir no meu s3 com "AWS-cognito-identity-poolID" que é codificado? Ou quaisquer outras etapas de segurança que devo tomar ?
Obrigado
Jaikey
amazon-web-services
security
amazon-s3
amazon-cognito
Jaikey Sarraf
fonte
fonte
Respostas:
Definição de Hack
Não sei ao certo o que significa pirataria no contexto da sua pergunta.
Suponho que você realmente queira dizer "que alguém pode fazer algo diferente do que fazer upload de um arquivo", que inclui excluir ou acessar objetos dentro do seu bucket.
Sua solução
Como o Ninad já mencionado acima, você pode usar sua abordagem atual ativando "Habilitar acesso a identidades não autenticadas" [1]. Você precisará criar duas funções, uma delas para "usuários não autenticados". Você pode conceder permissões PutObject a essa função no bucket S3. Isso permitiria que todos os que visitam sua página carregassem objetos no bloco S3. Eu acho que é isso que você pretende e é bom do ponto de vista da segurança, já que o IdentityPoolId é um valor público (ou seja, não é confidencial).
Outra solução
Eu acho que você não precisa usar o Amazon Cognito para conseguir o que deseja. Provavelmente é suficiente adicionar uma política de bucket ao S3 que conceda permissão para PutObject a todos.
Isso é seguro?
No entanto, eu não recomendaria habilitar o acesso direto de gravação pública ao seu bucket S3.
Se alguém abusar do seu site enviando spam para o seu formulário de upload, você incorrerá em cobranças S3 para operações de venda e armazenamento de dados.
Seria uma abordagem melhor enviar os dados pelo Amazon CloudFront e aplicar um WAF com regras baseadas em taxa [2] ou implementar um serviço de limitação de taxa personalizado antes do upload do S3. Isso garantiria que você possa reagir adequadamente a atividades maliciosas.
Referências
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / regras com base no limite mais baixo para aws-waf-waf /
fonte
Sim, o bucket s3 é seguro se você estiver usando o "AWS-Cognito-Identity-Pool" no lado do cliente, também habilite o CORS que permite ações somente de um domínio específico que garante que, se alguém tentar fazer upload direto ou listar bucket, obterá "access- negado ".
fonte
Verifique também se você definiu as credenciais de r / w do arquivo do acesso codificado para que ele possa ser lido apenas pelo nó local e por mais ninguém. By the way, a resposta é sempre um sim, é apenas uma questão de quanto alguém está disposto a se envolver em "hackear". Siga o que as pessoas disseram aqui e você estará seguro.
fonte