Vaya!
Me alegro de haber habierto este debate...
El tema de la seguridad es algo que no me preocupa en este punto dado, puesto que conducir un vehículo es peligroso, pero es responsabilidad del conductor lo que haga con él..., no sé si me explico.
Si tanto le preocupa a alguien la seguridad en este punto, hay formas de bloquearlas. Me remito a los ejemplos:
Podríamos crear un objeto de seguridad en donde añadiríamos una propiedad matriz para incluir por cada elemento de la matriz aquellos comandos o funciones no permitidos, y tan sólo deberíamos buscar el valor de esos elementos en la cadena de la expresión. Esto también sería válido aplicando sólo aquéllas funciones o comandos permitidos. Otra opción es crearnos nuestras propias funciones o comandos para ser ejecutados con macrosustituciones, pero añadiéndoles un prefijo/sufijo al nombre que los hiciera diferentes de los nativos.
(es sólo una idea)
Salu2