Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] como puedo escapar de el codigo html para que no se ejecute

Estas en el tema de como puedo escapar de el codigo html para que no se ejecute en el foro de PHP en Foros del Web. como puedo escapar de el código html para que no se ejecute solo quiero que se vea el código y no que se ejecute mil ...
  #1 (permalink)  
Antiguo 19/05/2013, 16:43
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años
Puntos: 8
como puedo escapar de el codigo html para que no se ejecute

como puedo escapar de el código html para que no se ejecute
solo quiero que se vea el código y no que se ejecute mil gracias


Código PHP:
Ver original
  1. <?php
  2. $z='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Documento sin t&iacute;tulo</title>
  7. </head>
  8. <body>
  9. </body>
  10. </html>';
Código PHP:
Ver original
  1. echo $z; //este es el codigo que quiero imprimir
  2. ?>
  #2 (permalink)  
Antiguo 19/05/2013, 17:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Necesitas htmlspecialchars(), consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/05/2013, 17:07
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 10 meses
Puntos: 20
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Simple...
Tienes que convertir los caracteres que tiene un significado especial en HTML entidades.
Por ejemplo < es &lt; y > es &gt; etc...
PHP ofrece una funcion para hacer esto htmlspecialchars.

tu codigo se quedaria:

Código PHP:
echo htmlspecialchars($z); 
A parte si quieres que tu codigo se vea en nuevas lineas y no todo en un, usa nl2br

Código PHP:
echo nl2br(htmlspecialchars($z)); 
Saludos
  #4 (permalink)  
Antiguo 19/05/2013, 17:13
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años
Puntos: 8
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Cita:
Iniciado por bulter Ver Mensaje
Simple...
Tienes que convertir los caracteres que tiene un significado especial en HTML entidades.
Por ejemplo < es &lt; y > es &gt; etc...
PHP ofrece una funcion para hacer esto htmlspecialchars.

tu codigo se quedaria:

Código PHP:
echo htmlspecialchars($z); 
A parte si quieres que tu codigo se vea en nuevas lineas y no todo en un, usa nl2br

Código PHP:
echo nl2br(htmlspecialchars($z)); 
Saludos
muy bueno saludos
  #5 (permalink)  
Antiguo 19/05/2013, 17:22
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años
Puntos: 8
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Cita:
Iniciado por bulter Ver Mensaje
Simple...
Tienes que convertir los caracteres que tiene un significado especial en HTML entidades.
Por ejemplo < es &lt; y > es &gt; etc...
PHP ofrece una funcion para hacer esto htmlspecialchars.

tu codigo se quedaria:

Código PHP:
echo htmlspecialchars($z); 
A parte si quieres que tu codigo se vea en nuevas lineas y no todo en un, usa nl2br

Código PHP:
echo nl2br(htmlspecialchars($z)); 
Saludos
muy bueno saludos


pero tengo otra duda como imprimo
Código PHP:
Ver original
  1. <?php
  2. //y como puedo imprimir esto
  3. $y="mysql_query("select nombre from cursos where nombre = 'jorge'");
  4. while($u=mysql_fetch_array($y)){
  5. echo $u[0];
  6. echo "<br />";
  7. }";
  8. ?>

ya que asi me da error
  #6 (permalink)  
Antiguo 19/05/2013, 17:26
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 10 meses
Puntos: 20
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Código PHP:
<?php 
//y como puedo imprimir esto 
$y='mysql_query("select nombre from cursos where nombre = \'jorge\'");
while($u=mysql_fetch_array($y)){
echo $u[0];
echo "<br />";
}'
;
echo 
nl2br(htmlspecialchars($y));
?>
Lo primero usa ' no " asi las variables seran tratadas como un string normal y se ignorara su significado especial ^^ luego en 'jorge' delante de las ' añades \ para escapar el significado especial de las comillas

Saludos.
  #7 (permalink)  
Antiguo 19/05/2013, 17:41
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años
Puntos: 8
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Cita:
Iniciado por bulter Ver Mensaje
Código PHP:
<?php 
//y como puedo imprimir esto 
$y='mysql_query("select nombre from cursos where nombre = \'jorge\'");
while($u=mysql_fetch_array($y)){
echo $u[0];
echo "<br />";
}'
;
echo 
nl2br(htmlspecialchars($y));
?>
Lo primero usa ' no " asi las variables seran tratadas como un string normal y se ignorara su significado especial ^^ luego en 'jorge' delante de las ' añades \ para escapar el significado especial de las comillas

Saludos.
pero tengo una duda y si lo meto

//y como puedo insertar esto en la base de datos para que no se ejecute en la base de datos o no me cree un problema
//esto es correcto para meter contenido a la base de datos

Código HTML:
Ver original
  1. <?php
  2. $y='mysql_query("select nombre from cursos where nombre = \'jorge\'");
  3. while($u=mysql_fetch_array($y)){
  4. echo $u[0];
  5. echo "<br />";
  6. }';
  7.  $insertar_valores=nl2br(htmlspecialchars($y));
  8.  
  9.  $u=mysql_query("INSERT INTO codigo  VALUES ( '', ' $insertar_valores')");
  10. if($u){
  11. echo "si inserto valor ". $t;
  12. }else{
  13. echo "no inserto valor  ". $t;
  14. }
  15. ?>
  #8 (permalink)  
Antiguo 19/05/2013, 18:27
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 10 meses
Puntos: 20
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Mmmm

Código PHP:
$insertar_valores htmlspecialchars(addslashes(trim($y)));
$u=mysql_query("INSERT INTO codigo  VALUES ( '', ' $insertar_valores')"); 
o si quieres puedes hacer esto:

Código PHP:
$y base64_encode($y);
$u=mysql_query("INSERT INTO codigo  VALUES ( '', ' $y')"); 
Aun que yo usaria el primer metodo.El segundo solo lo digo para info.

Última edición por bulter; 19/05/2013 a las 18:33
  #9 (permalink)  
Antiguo 19/05/2013, 19:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Cita:
Iniciado por jor_0203 Ver Mensaje
y como puedo insertar esto en la base de datos para que no se ejecute en la base de datos o no me cree un problema
Esta mal que pienses así, es un error tremendo, no te equivoques.

Si llegas a tener un problema se deberá únicamente al mal uso de comillas que puede desencadenar un error de sintaxis en PHP (lo que te está ocurriendo) o SQL y/o posiblemente por SQL-Injection, de ahí en fuera ningún otro código afectaría a la base de datos en si.

El código PHP, SQL, HTML, CSS, Javascript, etc. solo se ejecuta en determinado contexto, si guardas HTML este jamás se ejecutará en la base de datos, es ridículo.

El HTML y CSS sólo es interpretado por el navegador y nada más, así como el SQL por la base de datos, y el código PHP se ejecuta sólo por el intérprete de PHP, que lo guardes como texto lo vuelve inofensivo a menos que lo evalúes.

Confundir cosas básicas sólo pone en evidencia que no tienes ni idea de lo que estás haciendo.

Deberías estudiar un poco mas las tecnologías que pretendes abordar.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 19/05/2013, 19:26
Avatar de jor_0203  
Fecha de Ingreso: octubre-2011
Ubicación: mexico
Mensajes: 760
Antigüedad: 13 años
Puntos: 8
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Cita:
Iniciado por bulter Ver Mensaje
Mmmm

Código PHP:
$insertar_valores htmlspecialchars(addslashes(trim($y)));
$u=mysql_query("INSERT INTO codigo  VALUES ( '', ' $insertar_valores')"); 
o si quieres puedes hacer esto:

Código PHP:
$y base64_encode($y);
$u=mysql_query("INSERT INTO codigo  VALUES ( '', ' $y')"); 
Aun que yo usaria el primer metodo.El segundo solo lo digo para info.
¿y con eso escapo de inyección de sql?

según yo eso es cierto esta
pienso que es genial

pero me gustaria saber tu opinion
mil gracias

eres un genio
  #11 (permalink)  
Antiguo 19/05/2013, 19:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Cita:
Iniciado por jor_0203 Ver Mensaje
¿y con eso escapo de inyección de sql?

según yo eso es cierto esta
pienso que es genial
La respuesta es complicada.

En teoría si "resuelves" ese problema, para a un costo absurdo, al codificar las entidades del HTML y escapar con addslahes() solo deformas la intención original de la información, es como reparar una fuga de gas con goma de mascar.

No es genial, es ridícula.

Las funciones htmlspecialchars(), addslashes() y base64_encode() sirve para otras tareas, no para las de evitar SQL-Injection, que, aunque a simple vista pareciera que si lo son en el fondo guardan mediocridad para quien si lo cree.

Para manejar todo lo relativo a base de datos existe PDO, que tiene métodos de limpieza ideales para conservar la integridad de los datos sin tener que deformarlos, sin embargo también las extensiones simples deben contar con alternativas.

En tu caso sería mysql_real_escape_string() pero de por si MySQL ya es una extensión en vías de extinción, así que no vale la pena hablar de ello.

¿Solución?

Actualiza tu forma de trabajar y no tendrás que pensar en inyecciones de SQL jamás.

Cita:
Iniciado por jor_0203 Ver Mensaje
eres un genio
¿Genio?

Si, el tuerto es Rey en el país de los ciegos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 20/05/2013, 02:42
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 10 meses
Puntos: 20
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Que conste que estoy de acuerdo con lo de mysql_real_escape_string , simplemente se me olvido ponerlo.

pateketrueke no estaria mal que cambies tu forma de "hablar" y no mostrar respeto ante la gente y llamarles de todas las formas posibles. No tienen ni "una mentalidad simple" ni al parecer han llegado a un nivel para que sepan que es el PDO ... Tu a veces tambien dices cosas que no son correctas, pero no veo a nadie deciendote que te actualices o "I have no idea what i'm doing"
Nadie dijo que htmlspecialchars es para evitar sql injection pero prefiero hacer un insert con htmlspecialchars que 10000000 selects con el :@

Cita:
En tu caso sería mysql_real_escape_string()
Si vamos a hablar de cosas que pueden pasar o que pudieran estar mejor ... deberias de saber que mysql_real_escape_string() tiene sus problemas y vulnerabilidades.
( NO digo que es peor que addslashes , yo uso PDO , asi que no uso ninguno )
Es verdad que esta bien usar mysql_real_escape_string() , pero si tenemos que ser justos , eso tampoco te protege del todo. No todo depende de si escapas 5 chars.
Yo ya se por que es mejor usar mysql_real_escape_string, ante addslashes ( que por cierto to tiene nada que ver con htmlspecialchars y trim ) pero podrias explicar el porque ... y no solo decir que esta mal, y venga a hablar mal de que la gente se tiene que actualizar. Si tu tienes una consulta asi:

Código PHP:
$query mysql_query("SELECT * FROM table WHERE id=$id"); 
igual dara que hagas 234892304 mysql_real_escape_string , addslahes etc.

Bueno me voy a trabajar, saludos.
  #13 (permalink)  
Antiguo 20/05/2013, 07:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: como puedo escapar de el codigo html para que no se ejecute

Pues primero hay que separar peras y manzanas, el tema inicial hablaba únicamente de entidades de HTML y terminamos hablando de SQL-Injection, ¿por qué?

Pues porque jor_0203 cree que puede preguntar lo que se le antoje, aún sin leer las normas del foro, y demás otros usuarios le siguen la bolita, aportando cosas fuera de contexto y generando una montañita de desinformación.

Ahora, de pronto jor_0203 quiere hacer otra cosa, combinando comillas y lo hace mal, pero ahí tienes a todos tratando de ayudar cuando omitimos lo mas evidente: el manejo y entendimiento de cadenas de texto requiere conocimientos simples y básicos, ¿qué tan difícil es aprender eso?

No lo sé pero eso se aprende leyendo y no yendo al foro a preguntar cosas tan básicas.

Una cosa a la vez, y eso, ya había quedado resuelto antes.

Ahora, los usuarios leerán este tema y gracias a la tremenda inquietud (mal enfocada por cierto) de jor_0203 y la mal organizada participación de nosotros puede que este tema no sea nada claro para nadie, además yo "hablo" así con los usuarios que ya "conozco", o que al menos conozco sus hábitos y siempre veo dando vueltas y vueltas, vagando.

Les dices que lean el manual y jamás lo hacen, encima se ofenden, así no se puede, lo siento.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: escapar, html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:53.