elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Comparativa y análisis mejores sistemas de videollamadas


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: ¿Como podía escapar correctamente esta cadena?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Como podía escapar correctamente esta cadena?  (Leído 421 veces)
MiguelCanellas


Desconectado Desconectado

Mensajes: 558



Ver Perfil
[Pregunta]: ¿Como podía escapar correctamente esta cadena?
« en: 29 Julio 2020, 23:30 »

Hola,

tengo la siguiente cadena..
Código
  1. $string = "ves aquella esquina? ' tu madre y tu hermana ahí trabajan!"; // la cadena podemos ver que tiene una comilla simple '
  2.  

va a ver problemas cuando quiera hacer esto con jQuery
Código
  1. $(selector).html('<p><?php echo($string); ?></p>');
  2.  

me quedará en el html...
Código
  1. $(selector).html('<p>ves aquella esquina? ' tu madre y tu hermana ahí trabajan!</p>');
  2.  

¿Se dieron cuenta del error? Comprendo que hay que escapar esto, pero no se de que manera puedo lograrlo. Tengo un nudo en la cabeza ya, probé un par de cositas pero no me funcionaron.


En línea

@XSStringManolo
Colaborador
***
Desconectado Desconectado

Mensajes: 2.033


Turn off the red ligth


Ver Perfil WWW
Re: [Pregunta]: ¿Como podía escapar correctamente esta cadena?
« Respuesta #1 en: 29 Julio 2020, 23:32 »

\'


En línea

MiguelCanellas


Desconectado Desconectado

Mensajes: 558



Ver Perfil
Re: [Pregunta]: ¿Como podía escapar correctamente esta cadena?
« Respuesta #2 en: 29 Julio 2020, 23:39 »

\'

¿?

No me refiero a solo escapar una ' es decir, quiero escapar esa cadena para que no detecte lo html que sea que haya ahí... desde un $string = '<h6>hola</h6>' hasta un $string = 'esto ' es comilla'

Gracias igualmente!



\'

La solución que encontré usado como base tu respuesta fue:
Código
  1. <div id="box"></div>
  2.  
  3. <?php
  4. $string = "<h6>¿ves aquella esquina? tu madre y ' tu hermana ahí trabajan!</h6>";
  5. $string = str_replace("'", "\'", $string);
  6. $string = str_replace('"', '\"', $string);
  7. $string = htmlspecialchars($string);
  8. ?>
  9.  
  10. <script type="text/javascript">
  11. $('#box').html('<?php echo($string); ?>');
  12. </script>
  13.  

No se si existan maneras mejores pero fue lo que escribí...


Mod: No hacer doble post.
« Última modificación: 4 Agosto 2020, 07:52 por #!drvy » En línea

EdePC
Colaborador
***
Desconectado Desconectado

Mensajes: 1.188


Ver Perfil
Re: [Pregunta]: ¿Como podía escapar correctamente esta cadena?
« Respuesta #3 en: 30 Julio 2020, 01:27 »

Por supuesto, PHP tiene htmlentities para convertir todos los caracteres posibles a entidades html y htmlspecialchars para solo convertir solo los que puedan causar problemas.

Para ahorrarme en problemas de codificación html mejor usar de una htmlentities y decirle que también convierta las comillas simples y dobles con ENT_QUOTES:

Código
  1. <?php
  2.  $string = "ves aquella esquina? ' tu madre y tu hermana ahí trabajan!";
  3.  $string = htmlentities($string, ENT_QUOTES);
  4. ?>
  5.  
  6. <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  7.  
  8. <div class="hola"></div>
  9.  
  10. <script>
  11.  $(".hola").html('<p><?php echo($string); ?></p>');
  12. </script>

Interpretándose todo como:

Código
  1. <html><head><script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
  2.  
  3. </head><body><div class="hola"><p>ves aquella esquina? ' tu madre y tu hermana ahí trabajan!</p></div>
  4.  
  5.  $(".hola").html('<p>ves aquella esquina? &#38;#039; tu madre y tu hermana ah&iacute; trabajan!</p>');

Y mostrando:

Citar
ves aquella esquina? ' tu madre y tu hermana ahí trabajan!

- Y por supuesto que también escapa caracteres de < y > de por ejemplo <p>

Recursos: https://www.php.net/manual/es/function.htmlentities.php
En línea

WHK
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.264


The Hacktivism is not a crime


Ver Perfil WWW
Re: [Pregunta]: ¿Como podía escapar correctamente esta cadena?
« Respuesta #4 en: 1 Agosto 2020, 01:59 »

Creo que tu problema va más allá de escapar la cadena, tu problema está en el concepto del uso de cadenas dinámicas desde php hacia una variable de jquery, eso es una pésima práctica.

Código:
<?php
$string = "<h6>¿ves aquella esquina? tu madre y ' tu hermana ahí trabajan!</h6>";
$string = str_replace("'", "\'", $string);
$string = str_replace('"', '\"', $string);
$string = htmlspecialchars($string);
?>

Eso tiene XSS ya que no estás usando la secuencia de escape de javascript como lo indica el estandar, por lo contrario, solo estas reemplazando algunos caracteres y escapando codigo html en una cadena de tipo javascript, asi que estás doblemente equivocado.

Para comenzar, la etiqueta <h6> no tiene porque venir desde php y pasar por javascript para ser escrito, esto debe ser parte del template de html y no del código dinámico, la frase debe estar en plano sin etiquetas html. Por otro lado, la obtención de la frase debiese ser obtenida a traves de una solicitud ajax o si no a traves de etiquetas ocultas. javascript no puede contener código html y php no debiera entregar valores con html.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines