Foros del Web » Programando para Internet » PHP »

como funciona el htmlspecialchars ???

Estas en el tema de como funciona el htmlspecialchars ??? en el foro de PHP en Foros del Web. Tengo un puñetero Hacker que el muy ...... me envia mensajes a mi pagina web de comentarios ( donde no es necesario estar logeado ) ...
  #1 (permalink)  
Antiguo 07/03/2009, 08:16
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
como funciona el htmlspecialchars ???

Tengo un puñetero Hacker que el muy ...... me envia mensajes a mi pagina web de comentarios ( donde no es necesario estar logeado ) tipo

<META HTTP-EQUIV="Refresh" CONTENT="1; URL=http://timperu.gratishost.com/keane.htm">

<p>Tu mensaje: <script>alert('CONTACTAME TIOOOO!!! xD : HACKEANE ')</script></p>


He leido por hay que hay la funcios de htmlspecialchars que substituie los catacteres como ( < < " ", etc... ) para no generar problemas cuando un usuario con conocimiento de causa o sin el pueda enviarlo aa base de datos del administrador y poder provocar problmas.

<?php
$nuevo = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $nuevo; // resultado: &lt;a href='test'&gt;Test&lt;/a&gt;
?>


He provado coocando de mil maneras en el formulario, pero no funciona, como debo hacerlo ???, yo lo he proado asi, aver si veis donde tengo mal el codigo del <form> :


<textarea name="comentario" cols="60" rows="10" value="<?php
$nuevo = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $nuevo; // resultado: &lt;a href='test'&gt;Test&lt;/a&gt;
?>"></textarea>la verdad, no se si va dentro del form, al final, ..... he provado todas maneras y no me funciona, alguna ayuda ???'

Es urgente, ya que el acker cada dia me manda avisos de amenaza..!!!

Gracias
  #2 (permalink)  
Antiguo 07/03/2009, 08:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: como funciona el htmlspecialchars ???

A la hora de mostrar los datos ingresados en la base de datos es donde debes aplicar htmlspecialchars.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 07/03/2009, 12:25
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como funciona el htmlspecialchars ???

Cita:
<textarea name="comentario" cols="60" rows="10" value="<?php
$nuevo = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $nuevo; // resultado: &lt;a href='test'&gt;Test&lt;/a&gt;
?>"></textarea>la verdad, no se si va dentro del form, al final, ..... he provado todas maneras y no me funciona, alguna ayuda ???'
WTF?

1ero, recuerda que PHP se ejecuta de lado del cliente, no haces nada con poner el codigo alli.
2do, El valor de la etiqueta <textarea> va DENTRO de las etiquetas, no en un atributo "value" como los demas input.
3ero, tienes que aplicarlo cuando proceses el formulario, recogiendo los datos por POST, o a la hora de recuperar los mensajes, tu decides. Yo siempre lo hago antes de meter la informacion.
  #4 (permalink)  
Antiguo 07/03/2009, 14:44
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: como funciona el htmlspecialchars ???

Hola... Es exactamente como te dijeron, pero te lo aclaro un poco más....

Estructura:

-Envías datos.

<form........</form>

-Recoges...

Código PHP:
$dato1conhtml=$_POST['dato1'];
$dato2conhtml=$_POST['dato2']; 
-Transformas...
Código PHP:
$dato1=htmlspecialchars($dato1conhtml);
$dato2=htmlspecialchars($dato2conhtml); 
-Envías...

mysql_query(XXXXXXXXXXXXXXXX);
  #5 (permalink)  
Antiguo 07/03/2009, 17:15
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: como funciona el htmlspecialchars ???

puedes usar también strip_tags
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #6 (permalink)  
Antiguo 08/03/2009, 08:08
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: como funciona el htmlspecialchars ???

entonces para ejecutar las modificacions del HTML al ejecutar el POST seria algo asi ??

<textarea name="comentario" cols="60" rows="10" value=""></textarea>

<?php $comentario = htmlspecialchars['comentario']; ?>

todo dentro del <form> ????

Disculpad si expongo varvaridades en el codigo, pero soy principiante

Última edición por jonysi_d; 08/03/2009 a las 08:55
  #7 (permalink)  
Antiguo 08/03/2009, 09:12
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como funciona el htmlspecialchars ???

No, no todo dentro de el codigo. Recuerda que para que el codigo PHP se ejecute tienes que hacerle una peticion al servidor, es decir, tiene que haber recarga.
Tienes que poner el htmlspecialchars() en la pagina que procesa el formulario (La que pones en el action del form).
  #8 (permalink)  
Antiguo 08/03/2009, 09:43
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: como funciona el htmlspecialchars ???

el form action lo tengo en un variable !!

<form action="<?php echo $editFormAction; ?>" method="post" name="form1" onSubmit="MM_validateForm('correo','','RisEmail',' nombre_usuario','','R','fecha','','R','comentario' ,'','R');return document.MM_returnValue">
<p>&nbsp;</p>
<table align="center">
<tr valign="baseline">
<td width="115" align="right" nowrap>Correo:</td>
<td width="383"><input type="text" name="correo" value="" size="32">
<span class="Estilo72"> <img src="imagenes/record.gif" alt="campo obligatorio" width="12" height="11">no ser&aacute; publicado </span></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Nombre usuario:</td>
<td><input type="text" name="nombre_usuario" value="" size="32">
<span class="Estilo72"><img src="imagenes/record.gif" alt="campo obligatorio" width="12" height="11"></span></td>
</tr>
<tr valign="baseline">
<td nowrap align="right">fecha</td>
<td><label>
<input name="fecha" type="text" id="fecha" value="<?php $data = date("d-n-Y");echo $data; ?>">
<span class="Estilo72"><img src="imagenes/record.gif" alt="campo obligatorio" width="12" height="11"></span></label></td>
</tr>
<tr valign="baseline">
<td nowrap align="right" valign="top">Comentario:</td>
<td><textarea name="comentario" cols="60" rows="10" value=""></textarea>
<span class="Estilo72"><img src="imagenes/record.gif" alt="campo obligatorio" width="12" height="11"></span> </td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td><input type="submit" value="Enviar comentario"></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>

Última edición por jonysi_d; 09/03/2009 a las 15:28
  #9 (permalink)  
Antiguo 08/03/2009, 11:03
Avatar de razengan  
Fecha de Ingreso: agosto-2007
Ubicación: Lima - Perulandia
Mensajes: 117
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: como funciona el htmlspecialchars ???

ya mira en el form dice action="<?php echo $editFormAction; ?>" es una variable y seria algo como esto action="procesador.php" ok? en ese archivo debes de poner el codigo para eliminar los tags html.
  #10 (permalink)  
Antiguo 08/03/2009, 15:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
podrias decirme donde debo insertar el htmlspecialchars ?? ya que no se si se coloca en el head, body , o no importa ???

El problema esque si modifico el action="comentarios.php" que es la pagina donde se dirige despues de enviar los datos, despues no me sube la informacion a mi Base de Datos, ya que la $editFormAction envia los datos del <form> a la base de datos.


$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO comentarios (correo, nombre_usuario, fecha, comentario) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['correo'], "text"),
GetSQLValueString($_POST['nombre_usuario'], "text"),
GetSQLValueString($_POST['fecha'], "date"),
GetSQLValueString($_POST['comentario'], "text"));

mysql_select_db($database_miweb, $miweb);
$Result1 = mysql_query($insertSQL, $miweb) or die(mysql_error());

$insertGoTo = "comentarios.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_miweb, $miweb);
$query_comentarios = "SELECT * FROM comentarios ORDER BY visitaid DESC";
$comentarios = mysql_query($query_comentarios, $miweb) or die(mysql_error());
$row_comentarios = mysql_fetch_assoc($comentarios);
$totalRows_comentarios = mysql_num_rows($comentarios);
?>

Lo que he puesto en negrita es lo que deberia de sustituir por htmlspecialchars ???????


la verdad no se como hacerlo, entiendo la teoria que me explica muy generosamente el amigo Razenga y Ronruby, pero a la hora de aplicarlo, voy algo perdido, ya que es codigo generado por Dreamweaver y creo que lo complica un poco...

Ayuda porfavor...

Imajino yo que debo modificar esta linea

$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

i cambiarlo por :
$editFormAction .= "?" . htmlspecialchars($_SERVER['QUERY_STRING']);
};

pero como le digo o como lo hago para hacer que modifique los signos ???

Ya que lo he provado asi, pero no funciona, sigo recibiendo mensajes con caracteres HTML

Última edición por GatorV; 09/03/2009 a las 16:32
  #11 (permalink)  
Antiguo 09/03/2009, 16:28
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: como funciona el htmlspecialchars ???



En la pagina que procesa la informacion, a el campo que trae el comentario ... algo asi:
GetSQLValueString(htmlspecialchars($_POST['comentario']), "text"));

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 06:11.