Tengo una base de datos Mysql con una API vinculada a ella para llamar y ejecutar el código PHP almacenado en esa base de datos. Sí, has oído bien, el código PHP almacenado y ejecutado desde una base de datos Mysql. Entonces, esto es bastante serio desde el punto de vista de la seguridad, y ese es mi dilema. Tu primera sugerencia podría ser: "¡NO, mala!". No temas, se puede hacer. Hay algunas buenas razones para hacer esto.
- Aumento de velocidad de 40x (sin lecturas HD)
- Inyección de dependencia automática.
- Otros lenguajes de programación.
Seguridad.
El saneamiento de entrada "parece" ser lo más importante aquí, y mi filtro es de primera categoría. La inyección SQL sería tu peor pesadilla.
Mi pregunta es la siguiente: cuando se ejecuta código en vivo desde una base de datos, ¿se puede defender, se puede atacar? ¿Qué vectores de ataque podrían ser posibles? ¿Y cómo podrías defenderte?
En resumen, necesito un consejo experto, el peor de los casos, el mejor de los casos, haz esto, no hagas esto. Estás loco, algo.
ACTUALIZACIÓN1: Leeré todos los comentarios una y otra vez, La verdad importa.
- Estoy usando un clúster Percona mysql, se está produciendo una velocidad medible (almacenada en RAM)
- El control de versiones es fácil (y está integrado) Conseguí una tabla con L (idioma) FunctionName Vars Deps RequiredVars VERSION # etc ... etc.
- Yo agregaría para el nivel de interés, que una aplicación podría estar basada principalmente en enteros, en cuyo caso la entrada se puede limpiar mediante la conversión a (int) (IE. $ num = (int) $ _ GET ['s'];)
- Acojo con gran satisfacción las ideas, sugerencias y temas. Como creo que esto rompe muchas barreras al llegar a las nuevas y ahora estoy completamente dispuesto y dedicado a resolver esto, esa parte es un trato hecho; ¡Oh, la humanidad! Pero creo que esto PUEDE ser exitoso.
- Otro beneficio agregado es la neutralidad de idioma, ya que almaceno mi código en una base de datos, etiquetando un código como PHP y otro como RUBY o PYTHON, tiene usos serios. Nada que una pequeña acción de php-shellexec no pueda hacer hermosa (de nuevo teniendo en cuenta el perfecto saneamiento de entrada)
Continuaré actualizando (tengo una agenda ocupada, pero estaré tan atento como sea posible)