Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

334
Views
Vuelva a escribir la función Javascript sin usar eval() para ser más seguro

¿Alguien que navega por el sitio puede ayudarme a reescribir esta antigua función de aplicación web para que sea un poco más segura?

 $('table.dataTable.json-data').each(function() { console.log("dataTable function thing called"); var oTable = $(this).css('visibility', 'visible'); var dt_config = oTable.is('[data-dt_config]')? eval('('+oTable.attr('data-dt_config')+')') : {}; if(oTable.is('[data-dt_settings]')) { $.extend(true,dt_config,oTable.data('dt_settings')); }

Entonces, por contexto, esta función de Javascript se llama cuando un usuario desea imprimir o exportar una tabla de datos que ha mostrado en una página. Genera una nueva página con la tabla y aparece un menú de impresión (o su navegador descarga automáticamente su documento).

Mi cliente insiste en que data-dt_config se puede verificar antes de ejecutar eval() para evitar la inyección, pero realmente ni siquiera quiero usar eval() en absoluto.

He mejorado mucho con perl y php, pero Javascript todavía está fuera de mi elemento. Por favor, siéntete libre de explicármelo como si comiera crayones, porque me gustaría usar esta publicación como una buena oportunidad de aprendizaje para comprender mejor Javascript, especialmente en términos de codificación segura.

 Object buttons: Array(3) 0: {extend: 'csv'} 1: {extend: 'pdf', orientation: 'landscape'} 2: {extend: 'print', customize: ƒ} length: 3 [[Prototype]]: Array(0) columns: (8) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}] createdRow: ƒ (row,data,dataIndex) filename: "Material deduction history" lengthMenu: (2) [Array(4), Array(4)] source: "material/1007199/history" [[Prototype]]: Object

Este es el contenido de la variable dt_config . Parece ser literalmente solo un conjunto de instrucciones para hacer la tabla de datos.

Esta es la solución de tirita que arrojé:
let tempConfig = oTable.attr('data-dt_config');

let testResult = tempConfig.includes("buttons","orientation","customize");

Sigo pensando que sería extremadamente fácil de eludir, así que estoy investigando algo mejor. Un poco de sabiduría sobre esto sería genial.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!