Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
¿Cómo reemplazar los identificadores con sus valores asociados para la evaluación fuera del sitio?

Me gustaría tener una etiqueta:

<script src="https://mysource.com/script?foo=bar"></script>

https://mysource.com/script es un punto final de función en la nube que devuelve un script que debe ejecutarse en el navegador utilizando bar como valor para foo . El script no puede evaluar una función y simplemente devolver el resultado porque su comportamiento esperado es causar efectos secundarios como agregar cosas al objeto de la ventana.

Pude hacerlo haciendo cosas como:

 //prevents code injection like eval("evilcode") function sanitize(){} const foo = sanitize(req.query.foo); const myFunc = ()=>{... <uses foo somewhere> ... <causes side effects> ...}; let strFunction = myFunc.toString(); strFunction = strFunction.replace("foo", foo); const script = "("+strFunction+")();"; res.status(200).send(script);

Pero no puedo dejar de preguntarme si hay una mejor manera de hacerlo. Google hace lo que estoy tratando de hacer en sus scripts gtag. Si va a https://www.googletagmanager.com/gtag/js?id=AW-950577603 y ctrl+f AW-950577603, verá que la identificación consultada (AW-950577603) aparece dentro del código javascript. Pero no tengo idea si lo que están haciendo es exactamente lo que estoy haciendo o si lo han hecho de una mejor manera. ¿Sugerencias?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Tu codigo:

 const myFunc = ()=>{... <uses foo somewhere> ... <causes side effects> ...}; let strFunction = myFunc.toString(); strFunction = strFunction.replace("foo", foo); const script = "("+strFunction+")();";

En lugar de reemplazar foo por texto, podría convertir a foo en un parámetro:

 const myFunc = (foo)=>{... <uses foo somewhere> ... <causes side effects> ...}; let strFunction = myFunc.toString(); const script = "("+strFunction+")("+foo+");";
about 4 years ago · Juan Pablo Isaza Denunciar

0

Tu codigo:

 //prevents code injection like eval("evilcode") function sanitize(){} const foo = sanitize(req.query.foo);

Si desea que req.query.foo aparezca como una cadena literal de JavaScript, entonces JSON.stringify a menudo funciona:

 const foo = JSON.stringify(req.query.foo);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Normalmente, almacenaría mi código JavaScript del lado del cliente en un archivo separado. Separar JavaScript del lado del cliente y del lado del servidor me ayuda a mantener mi código. En su caso, el archivo puede exponer una función llamada initializeMyApp , y puede crear dinámicamente una llamada para initializeMyApp con el método de parámetro-argumento explicado en otra respuesta. Por ejemplo:

 let strFunction = fs.readFileSync("initializeMyApp.js", "utf-8"); const script = "("+strFunction+")("+foo+");";

Aún mejor: almacene su código JavaScript del lado del cliente en un archivo separado y sírvalo como contenido estático (posiblemente con un CDN). Luego haga que el código del cliente llame a initializeMyApp en un <script> separado:

 <script src="https://mysource.com/script"></script> <script>initializeMyApp("bar");</script>
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda