security - usar - ¿Por qué no se recomienda utilizar las funciones almacenadas del lado del servidor en MongoDB?
que son los procedimientos almacenados en sql server 2008 (1)
Estoy seguro de que he declarado la lista un par de veces a pesar de que el resultado de la búsqueda de Google se ha completado solo con personas que le dicen cómo hacerlo:
- Es
eval
-
eval
tiene habilidades naturales para ser fácilmente inyectables, es como un equivalente de PDO que no es SQL, si no construyes una biblioteca de escape a gran escala, te arruinará. Al usar estas funciones, estás reemplazando efectivamente el lenguaje nativo más seguro de MongoDB por algo que es tan inseguro como cualquier SQL anterior. - Toma un bloqueo global y puede tomar el bloqueo de escritura y no se liberará hasta que la operación esté completamente completa, a diferencia de otras operaciones que se lanzarán en ciertos casos.
-
eval
solo funciona en Primarios y nunca ningún otro miembro del conjunto de réplicas - Básicamente se está ejecutando, sin marcar, una tonelada de JS en un envo incluido V8 / spidermonkey que viene con MongoDB con plena capacidad para tocar cualquier parte de la base de datos y los comandos de administración, ¿suena seguro?
- NO es MongoDB y tampoco es "MongoDBs SQL", se ejecuta dentro de un entorno JS integrado, no el código MongoDBs C ++ en sí (a diferencia del framework de agregación).
- Debido al punto anterior, es EXTREMADAMENTE lento en comparación con muchas otras opciones, esto también se aplica a
$where
usa.
Eso debería ser suficiente para comenzar en este frente.
De acuerdo con la documentación de MongoDB, no se recomienda el uso de funciones almacenadas del lado del servidor. ¿Cuál es la razón detrás de esta advertencia?