Etherpad-lite: Exportar pads con el nombre * da como resultado una instancia de etherpad que no responde

Creado en 15 abr. 2017  ·  13Comentarios  ·  Fuente: ether/etherpad-lite

Pad llamado * causa un uso del CPU del 100% en la exportación.

He utilizado la función de exportación etherpad.

Supongo que * coincide con todos los nombres de pad e intenta exportar toda la instancia.
Probé esto en mi instancia con un pad con mucho historial llamado "foobar" e intenté exportar un pad recién creado llamado "foo *". Existen otras almohadillas como foobaz y foofoo.

El archivo exportado para foo * era más grande que el exportado para foobar.

Serious Bug

Comentario más útil

¿Arriba? Este es un problema de confidencialidad serio.

Todos 13 comentarios

https://github.com/ether/etherpad-lite/tree/fix/export-wildcards como solución. En el pasado, antes de https://github.com/ether/etherpad-lite/commit/a0fb65205c7d7ff95f00eb9fd88e93b300f30c3d , era posible especificar un prefijo y obtener una exportación de pads que coincidieran con ese prefijo.

Para comprender mejor este error, alguien debe comprender la parte del generador de consultas en ueberdb.

Cuando se usa un backend sql, tener un pad con el nombre de ex. ___ exportará todos los pad con un nombre de 3 letras.

Ver:
https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
https://github.com/Pita/ueberDB/blob/5c2ef4dc1476ef24bc475885817816c3e602ec8b/mysql_db.js

Qué hará ueberdb para encontrar la clave (* y% se filtran en el etherpad parcheado, pero _ también es un carácter especial):
SELECCIONE key DESDE store DÓNDE key LIKE?

¡Gracias! Debido a que ueberdb admite muchos backends de bases de datos diferentes, probablemente también necesitemos verificarlos.

También sería bueno si admitimos los caracteres en los nombres de los pads y no solo los filtremos, sino que los escaparemos antes de que lleguen a la base de datos. Lo investigaré mañana.

Al menos sqlite y postgresql tendrán el mismo problema.

No estoy seguro de los otros backends de la base de datos.

lo siento, toma tanto tiempo ...
mysql, postgresql, sqlite y crate usan% y _
cassandra, sofá, repensar, mongo, sucio, redis probablemente admita expresiones regulares estilo PCRE

leveldb y lmdb no implementan findKeys

¿Arriba? Este es un problema de confidencialidad serio.

FWIW, hemos deshabilitado el punto final de exportación etherpad por esta razón específica. Mientras leía el código, me di cuenta de que el punto final de exportación etherpad no usa el administrador de teclado como lo hace el punto final, por ejemplo, txt, sino que llama directamente a las funciones db. Admitiré 0 conocimiento de los componentes internos de ethepad a partir de este momento, pero dado que el punto final de exportación txt no tiene este problema, ¿tal vez valga la pena modificar el punto final de etherpad para usar el padmanager también en lugar de luchar contra esto en el nivel de base de datos?

Hola,
¿Cuál es el estado de este error?

Creo que este problema también debería crearse en https://github.com/Pita/ueberDB. La biblioteca implementa y exporta métodos para escapar de los operadores dependiendo de la base de datos con la que estemos trabajando (por ejemplo, los operadores de expresiones regulares deben escaparse cuando se trabaja con dirtydb).

Este problema no se trata tanto de que se bloquee el nodo (que ocurre cuando su consulta coincide con demasiadas entradas), sino de poder exportar el contenido completo del servidor etherpad sin conocer los nombres de los pads.

Entonces, en mi opinión, tiene sentido filtrar todos los caracteres especiales LIKE de sql hasta que esto se solucione en ueberDB.

Debería corregirse en https://github.com/ether/etherpad-lite/commit/806c9207e365304ef0f3130d7d3ec59f362f8f9d , ya que ya no llama a findKeys . ¿Puedes confirmar?

hola, mismo problema pero un poco diferente

tan pronto como abro una almohadilla, el nodo se vuelve muy codicioso al 100% del uso de la CPU, ¿¿¿¿Koi?

¿Fue útil esta página
0 / 5 - 0 calificaciones