¿Merece la pena mi esquema de autorización de acceso a archivos basado en invitación?

-1

Necesito permitir que los usuarios carguen archivos con datos confidenciales a un servidor, luego invitar a otros usuarios autenticados a acceder a archivos específicos.

Esta es mi solución propuesta:

Cada usuario tendrá su propia carpeta en la que carga los archivos, y la carpeta principal tendrá un .htaccess con deny all para bloquear el acceso directo. (Esto ya funciona bien).

Luego, un usuario invitado obtendrá una ID de invitación SHA1 generada y la url será algo así como download/[sha1]/file y luego puedo usar mi controlador para verificar si esta invitación existe en la base de datos para este usuario autenticado. Si lo hace, obtengo el archivo y, según la extensión del archivo, le doy el encabezado apropiado para la descarga del archivo.

ej:

localhost/[whatever]/download/[some_hash]/test.txt

invitation_table
invite_id         - unique ID
invite_token      - sha1 which will be generated by his unique email concatenated with other data
invite_invited    - logged user invite
invite_user       - user who invited the user

Según el hash, pregunto en la base de datos y obtengo los datos de invite_user y luego sé en qué directorio tengo que obtener el archivo porque puede haber varios archivos en el servidor con el mismo nombre en diferentes directorios.

¿Es este un buen enfoque?

    
pregunta ka_lin 29.09.2013 - 02:47
fuente

1 respuesta

1

Su uso de SHA-1 es algo arriesgado. Un esquema basado en tokens hash, como su propuesta, puede hacerse de forma segura. Sin embargo, hay varias sutilezas para hacerlo bien. Teniendo en cuenta que va a realizar una búsqueda en la base de datos para cada acceso a archivos, no es necesario confiar en los tokens de hash.

En cambio, sugiero un sistema mucho más simple en el que la invitation_table simplemente consiste en file_id y user_id. Cuando el propietario de un archivo invita a un usuario, agregue una fila a la tabla. Cuando un usuario solicita un archivo, verifique si el usuario solicitante tiene una entrada en la tabla para ese file_id.

    
respondido por el paj28 21.10.2013 - 22:08
fuente

Lea otras preguntas en las etiquetas