Primero, codifiqué mis aws "accessKey" y "securityKey" en el archivo JS del lado del cliente, pero era muy inseguro, así que leí sobre "aws-cognito" e implementé un nuevo JS de la siguiente manera:
¿Todavía estoy confundido con una cosa que alguien puede hackear en mi s3 con "AWS-cognito-identity-poolID" que está codificado? ¿O cualquier otro paso de seguridad debo tomar ?
Gracias
Jaikey
amazon-web-services
security
amazon-s3
amazon-cognito
Jaikey Sarraf
fuente
fuente
Respuestas:
Definición de Hack
No estoy seguro de lo que significa piratear en el contexto de su pregunta.
Supongo que realmente quiere decir "que cualquiera puede hacer algo diferente a cargar un archivo", que incluye eliminar o acceder a objetos dentro de su cubo.
Tu solución
Como Ninad ya mencionó anteriormente, puede usar su enfoque actual habilitando "Habilitar el acceso a identidades no autenticadas" [1]. Luego deberá crear dos roles, uno de los cuales es para "usuarios no autenticados". Podrías otorgarle permisos de PutObject a la función S3. Esto permitiría que todos los que visiten su página carguen objetos en el bucket de S3. Creo que eso es lo que pretende y está bien desde el punto de vista de la seguridad, ya que IdentityPoolId es un valor público (es decir, no confidencial).
Otra solución
Supongo que no necesita usar Amazon Cognito para lograr lo que desea. Probablemente sea suficiente agregar una política de depósito a S3 que otorgue permiso para PutObject a todos.
¿Es esto seguro?
Sin embargo, no recomendaría habilitar el acceso directo de escritura pública a su bucket de S3.
Si alguien abusara de su sitio web enviando correo no deseado a su formulario de carga, incurrirá en cargos S3 por las operaciones de colocación y el almacenamiento de datos.
Sería un mejor enfoque enviar los datos a través de Amazon CloudFront y aplicar un WAF con reglas basadas en la tasa [2] o implementar un servicio personalizado de limitación de la tasa frente a su carga S3. Esto aseguraría que pueda reaccionar adecuadamente ante una actividad maliciosa.
Referencias
[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / reglas-basadas-en-tasa-baja-umbral-inferior-para-aws /
fuente
Sí, s3 bucket es seguro si está utilizando a través de "AWS-Cognito-Identity-Pool" en el lado del cliente, también habilita CORS que permite la acción solo desde un dominio específico que garantiza que si alguien intenta cargar directamente o enumerar bucket, obtendrá "acceso- negado ".
fuente
También asegúrese de haber configurado las credenciales de archivo r / w del acceso codificado para que solo pueda leerlo el nodo local y nadie más. Por cierto, la respuesta es siempre un sí, es solo una cuestión de cuánto alguien está dispuesto a comprometerse a "hackear". Siga lo que dijo la gente aquí y estará a salvo
fuente