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

255
Views
mostrar html como texto

En mi juego, cambié la lista de jugadores de lienzo a html, por lo que apareció una vulnerabilidad de que cualquier jugador puede darse un nombre en el que puede insertar código js, por ejemplo, <script>alert(1);</script> que funcionará para todos los jugadores cuando el jugador aparezca en la lista de jugadores. La pregunta es, ¿cómo hacer que html no funcione y todo lo que ingrese el jugador se muestre como texto? La pre en html no me ayudó :(

El código para agregar un jugador a la lista de jugadores:

 const drawLeaderboard = function() { if (!settings.showLeaderboard || !leaderboard.items) return wjQuery('#leaderboard').css('display', 'none'); else wjQuery('#leaderboard').css('display', 'block'); let text, vip = false, isMe = false; const texts = { all: '', emoji: '' }; for (let i = 0; i < leaderboard.items.length; i++) { if (leaderboard.type == 'text') text = leaderboard.items[i]; else text = leaderboard.items[i].name, isMe = leaderboard.items[i].me, vip = leaderboard.items[i].vip; texts.all += `<div class="item"${isMe ? 'style="color: #faa;"' : ''}>${text.trim()}</div>`; texts.emoji += `<div class="item">${vip ? '👑' : ''}</div>`; } wjQuery('#leaderboard > .content > .items').html(texts.all); wjQuery('#leaderboard > .content > .emoji').html(texts.emoji); }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Ya hay buenas respuestas sobre esto, por ejemplo, este ;

Robé la respuesta para ahorrarte un clic ;-)

Hay respuestas adicionales en este hilo que también pueden resultarle interesantes.

 var entityMap = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;', '/': '&#x2F;', '`': '&#x60;', '=': '&#x3D;' }; function escapeHtml (string) { return String(string).replace(/[&<>"'`=\/]/g, function (s) { return entityMap[s]; }); }
over 4 years ago · Santiago Trujillo Report

0

Simplemente podría reemplazar todas las etiquetas con una cadena vacía. Mira este ejemplo:

 const regex = /<\/?[a-zA-Z]+>/g; const input = document.querySelector('input'); const newValue = input.value.replaceAll(regex, ''); console.log(newValue);
 <input type="text" value="My name is ... <script>alert('Trying to hack...');</script>">

over 4 years ago · Santiago Trujillo Report

0

Este es un ejemplo de secuencias de comandos entre sitios. podemos evitarlo codificando entidades HTML usando expresiones regulares.

 var encodedStr = $('#inputText').replace(/[\u00A0-\u9999<>\&]/g, function(i) { return '&#'+i.charCodeAt(0)+';'; });

esta cadena codificada si se muestra en html es la misma que los caracteres pero no se evaluaría como javascript

over 4 years ago · Santiago Trujillo Report
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!