JSPaste / Backend

JSPaste Backend
European Union Public License 1.2
4 stars 1 forks source link

Merge dev to stable #85

Closed inetol closed 6 months ago

github-advanced-security[bot] commented 6 months ago

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

Mrgaton commented 6 months ago

Por que ya no existe el lifetime?

y por que hashear el secret.

Mrgaton commented 6 months ago

Y por que llamar el hash de la password dataHash y no passwordHash o passHash

inetol commented 6 months ago

Por que ya no existe el lifetime?

y por que hashear el secret.

El lifetime se manejará de otra forma, el secret se hashea por el mismo motivo que se hashea el password y por requerimiento a la hora de encriptar los documentos

Mrgaton commented 6 months ago

No hashear el secret no sería peligroso por qué solo podrías borrarlo o editar el documento, nunca poder leerlo, entonces no sería un problema de privacidad.

inetol commented 6 months ago

Puede ser, pero tampoco estoy muy a favor en que se pueda editar o borrar así tan fácilmente leyendo el documento. La función criptográfica de Blake2b es por lo general igual o más rápido que SHA-1 por lo que el overhead es mínimo comparado con el cómputo que requiere encriptar los datos con AES256.

Mrgaton commented 6 months ago

ya pero igualmente nadie va a tener aceso a los documentos en si pero bueno asi hay 100% de privacidad

Mrgaton commented 6 months ago

Y si usamos t.File en vez de t.Any

https://elysiajs.com/validation/elysia-type.html#file

No se si podria funcionar

Mrgaton commented 6 months ago

Por que es necesario el secret para solo aceder al documento???

http://[::1]:4000/documents/tk-LQsbrHllOQGRxbEgK/raw

{"type":"document","code":1202,"message":"This document is protected. Provide the document secret and try again."}

Mrgaton commented 6 months ago

La secret solo deveria ser necesaria para eliminar el documento o editarlo no para aceder a su contenido para eso ya esta la passowrd

inetol commented 6 months ago

Y si usamos t.File en vez de t.Any

https://elysiajs.com/validation/elysia-type.html#file

No se si podria funcionar

Nop, no funciona

inetol commented 6 months ago

La secret solo deveria ser necesaria para eliminar el documento o editarlo no para aceder a su contenido para eso ya esta la passowrd

Password ha sido fusionado con el secret #89

Mrgaton commented 6 months ago

Osea ahora no puedes aceder a ningun documento si no le pones el header del sectret?..

Mrgaton commented 6 months ago

entonces todos los que pueden aceder al documento pueden eliminarlo?

Mrgaton commented 6 months ago

y si quiero que todos puedan verlo no tengo ningun control sobre el documento????????

inetol commented 6 months ago

Si el documento no esta encriptado puedes acceder al documento sin el secret, este sigue funcionando para editar y eliminar al igual que encriptar

Mrgaton commented 6 months ago

el problema es que siempre se encripta por que la secret nunca es nula

inetol commented 6 months ago

el problema es que siempre se encripta por que la secret nunca es nula

Por favor revisa el PR #89, solo se encripta si el cliente especifica un secret propio

Mrgaton commented 6 months ago

Nose no me acaba de gustar esto

Mrgaton commented 6 months ago

En mi opinión antes me gustaba más como estaban las cosas. Para mí ahora es más confuso porque ahora si especificas una secret custom no puedes compartir el documento normalmente porque necesitas la hender así que solo por url no va y si compartes la secret cualquiera podrá borrar el documento y o editarlo cuando con la password el aceso y la eliminacion y la edicion estaba separado.

Mrgaton commented 6 months ago

Y nose si yo le pondria un nombre mas descriptivo a document.header.sse

inetol commented 6 months ago

En mi opinión antes me gustaba más como estaban las cosas. Para mí ahora es más confuso porque ahora si especificas una secret custom no puedes compartir el documento normalmente porque necesitas la hender así que solo por url no va y si compartes la secret cualquiera podrá borrar el documento y o editarlo cuando la password estaba separada.

Un secret no está pensado para ser compartido, si necesitas compartir un documento no especificas el secret y el servidor se encarga de generarte uno que te permitirá realizar las acciones de siempre de editar y eliminar, por diseño y seguridad el servidor no encriptará ese documento. Por otro lado, si quieres encriptar el documento por seguridad, "por seguridad" no podrás visualizarlo a menos que tengas el secret con el que también te permitirá editar y eliminar el documento.

inetol commented 6 months ago

En mi opinión antes me gustaba más como estaban las cosas. Para mí ahora es más confuso porque ahora si especificas una secret custom no puedes compartir el documento normalmente porque necesitas la hender así que solo por url no va y si compartes la secret cualquiera podrá borrar el documento y o editarlo cuando la password estaba separada.

Un secret no está pensado para ser compartido, si necesitas compartir un documento no especificas el secret y el servidor se encarga de generarte uno que te permitirá realizar las acciones de siempre de editar y eliminar, por diseño y seguridad el servidor no encriptará ese documento. Por otro lado, si quieres encriptar el documento por seguridad, "por seguridad" no podrás visualizarlo a menos que tengas el secret con el que también te permitirá editar y eliminar el documento.

Esa es la ventaja de tener los ficheros encriptados y es que TU solo puedas visualizarlos, editarlos y borrarlos

Mrgaton commented 6 months ago

En mi opinión antes me gustaba más como estaban las cosas. Para mí ahora es más confuso porque ahora si especificas una secret custom no puedes compartir el documento normalmente porque necesitas la hender así que solo por url no va y si compartes la secret cualquiera podrá borrar el documento y o editarlo cuando la password estaba separada.

Un secret no está pensado para ser compartido, si necesitas compartir un documento no especificas el secret y el servidor se encarga de generarte uno que te permitirá realizar las acciones de siempre de editar y eliminar, por diseño y seguridad el servidor no encriptará ese documento. Por otro lado, si quieres encriptar el documento por seguridad, "por seguridad" no podrás visualizarlo a menos que tengas el secret con el que también te permitirá editar y eliminar el documento.

Esa es la ventaja de tener los ficheros encriptados y es que TU solo puedas visualizarlos, editarlos y borrarlos

y si quiero compartirlos quiero que esten encriptados pero no quiero que me los puedan eliminar y o borrar

inetol commented 6 months ago

De que sirve tenerlos encriptados si todo el mundo podrá leer los datos del documento?

Mrgaton commented 6 months ago

Tu como lo dejarias @tnfAngel

Mrgaton commented 6 months ago

De que sirve tenerlos encriptados si todo el mundo podrá leer los datos del documento?

Para eso entraria la password para bloquear solo quien puede verlo y o encriptarlo, por que alomejor quiero una secret custom pero que la gente pueda verlo normal

inetol commented 6 months ago

Ni que quisieras subir y compartir r34 desde el servidor, si necesitas ocultarlo del público aumenta el tamaño de la key (o pon una custom) y así ya complicas que hagan bruteforce al documento. Tener el combo de secret y password complica la implementación de actuales (como el edit) y futuras funcionalidades para manejar los documentos

Mrgaton commented 6 months ago

Eso es verdad pero no se si usaria la secret para esto

Mrgaton commented 6 months ago

Yo pondria mas informacion a los errores por que eso de {"type":"generic","code":1002,"message":"Validation of the request data failed. Check the entered data according to our documentation: https://jspaste.eu/docs"} esta bien pero nunca esta de mal que te digan exactamente que es lo que hiciste mal no se si eso seria posible. Tipo que te diga lo que esperava y lo que recivio asi tambien daria feedback a las librerias para mostrar el error.

inetol commented 6 months ago

Yo pondria mas informacion a los errores por que eso de {"type":"generic","code":1002,"message":"Validation of the request data failed. Check the entered data according to our documentation: https://jspaste.eu/docs"} esta bien pero nunca esta de mal que te digan exactamente que es lo que hiciste mal no se si eso seria posible. Tipo que te diga lo que esperava y lo que recivio asi tambien daria feedback a las librerias para mostrar el error.

Es que "generic" es el tipo de error que tira Elysia por X motivos, en el caso que has puesto seria porque los datos validados con TypeBox no son iguales y tira error, no podemos manejar eso.

inetol commented 6 months ago

Pero los "document" si podemos manejarlos, mejorar la descripción un poco más o añadir más códigos en otro PR

Mrgaton commented 6 months ago

😿

inetol commented 6 months ago

De momento voy a mantener esto en draft porque tengo dudas con el manejo del secret y quizás lo cambie

Mrgaton commented 6 months ago

No se si hacer que los errores sean mas descriptivos

inetol commented 6 months ago

Me gustaría hacer merge de esto ya, los mensajes de los errores puedes trabajarlos en una rama separada y ya llegará a stable

tnfAngel commented 6 months ago

no puedo hacerla ahora, si es posible revisa tu @Mrgaton

inetol commented 6 months ago

Ya dio el visto bueno en el PR anterior, lo paso a stable