Foros del Web » Programando para Internet » PHP »

Intrusos redireccionan mi página a otra pagina

Estas en el tema de Intrusos redireccionan mi página a otra pagina en el foro de PHP en Foros del Web. Hola, Tengo una pagina donde escribes algo en el formulario y lo envias a la base de datos, como dejar un comentario. El problema es ...
  #1 (permalink)  
Antiguo 02/09/2010, 17:00
Avatar de BekoxD  
Fecha de Ingreso: mayo-2008
Ubicación: Perú
Mensajes: 220
Antigüedad: 16 años
Puntos: 11
Intrusos redireccionan mi página a otra pagina

Hola,
Tengo una pagina donde escribes algo en el formulario y lo envias a la base de datos, como dejar un comentario.
El problema es que ponen en el formulario esta etiqueta
Cita:
<meta http-equiv="Refresh" content="0;url=www.url.url">
y se redirecciona a la pagina que indica.

No se como evitar que mi pagina rechaze todas etiquetas javascript y html, para no tener este problema.

Muchas gracias de antemano.
__________________
Si tú sabes lo que vales, ve y consigue lo que mereces.
  #2 (permalink)  
Antiguo 02/09/2010, 17:05
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años
Puntos: 2
Respuesta: Intrusos redireccionan mi página a otra pagina

Usa strip_tags para limpiar el codigo html que envien por el formulario.

Saludos.
__________________
Administrador de El Mundo de Bob Esponja
  #3 (permalink)  
Antiguo 02/09/2010, 17:06
 
Fecha de Ingreso: junio-2010
Mensajes: 24
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Intrusos redireccionan mi página a otra pagina

Tu problema es que están inyectando código en tu sistema de comentarios. Y eso es muy peligroso, ahora mismo seguramente seas vulnerable a ataques de cross-site-scripting(XSS). Lo que tienes que hacer es codificar el comentario para trasformar los caracteres en entidades, así se vería esa etiqueta como un comentario y no se procesaría como codigo HTML de la página.

Código PHP:
Ver original
  1. echo htmlspecialchars($comentario, ENT_QUOTES);

ó

Código PHP:
Ver original
  1. echo htmlentities($comentario);
  #4 (permalink)  
Antiguo 02/09/2010, 18:45
Avatar de BekoxD  
Fecha de Ingreso: mayo-2008
Ubicación: Perú
Mensajes: 220
Antigüedad: 16 años
Puntos: 11
Respuesta: Intrusos redireccionan mi página a otra pagina

Cita:
Iniciado por Franki_ Ver Mensaje
Tu problema es que están inyectando código en tu sistema de comentarios. Y eso es muy peligroso, ahora mismo seguramente seas vulnerable a ataques de cross-site-scripting(XSS). Lo que tienes que hacer es codificar el comentario para trasformar los caracteres en entidades, así se vería esa etiqueta como un comentario y no se procesaría como codigo HTML de la página.

Código PHP:
Ver original
  1. echo htmlspecialchars($comentario, ENT_QUOTES);

ó

Código PHP:
Ver original
  1. echo htmlentities($comentario);
Eso codigos donde los pego, y con que etiquetas, no estoy muy familiarisado con esas cosas aun.. me puedes hecharme una mano con eso?
__________________
Si tú sabes lo que vales, ve y consigue lo que mereces.
  #5 (permalink)  
Antiguo 02/09/2010, 20:11
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Intrusos redireccionan mi página a otra pagina

Buenas
Verás, ese código que te pasaron por ahí lo tienes que pegar en el archivo que procesa los datos enviados del formulario, donde $comentario tienes que poner el nombre del campo que quieres evitar que inyecten código, este es un ejemplo pequeño;

Código PHP:
Ver original
  1. $conexion = mysql_connect('localhost','root','');
  2. mysql_select_db('db',$conexion);
  3. $mensaje = htmlentities($_POST['mensaje']);
  4.  
  5. $insertar = mysql_query("INSERT INTO mensajes (mensaje) VALUES ('$mensaje')");

Ahí estamos primero haciendo la conexion, luego seleccionamos la base de datos, después, con htmlentities transformamos los carácteres que son como por ejemplo "<" a entidades HTML, de esta forma no se leerá como código lo que se ponga entre <> (Puedes leer algo sobre eso en Google)
Por último, insertamos todo en la base de datos.

Saludos!
  #6 (permalink)  
Antiguo 02/09/2010, 20:26
Avatar de BekoxD  
Fecha de Ingreso: mayo-2008
Ubicación: Perú
Mensajes: 220
Antigüedad: 16 años
Puntos: 11
Respuesta: Intrusos redireccionan mi página a otra pagina

Cita:
Iniciado por Sourcegeek Ver Mensaje
Buenas

Código PHP:
Ver original
  1. $conexion = mysql_connect('localhost','root','');
  2. mysql_select_db('db',$conexion);
  3. $mensaje = htmlentities($_POST['mensaje']);
  4.  
  5. $insertar = mysql_query("INSERT INTO mensajes (mensaje) VALUES ('$mensaje')");
Gracias amigo..
Mi cogido es asi..

Código:
<? include ("config.php"); 
$id=$_GET["id"];
$x=mysql_query("SELECT * FROM fblike WHERE id=$id");
	while ($y=mysql_fetch_assoc($x)){
	$like=$y['like'];
	$new_hits=$y['hits']+1;
	$hits=$y['hits'];
	}
mysql_query("UPDATE fblike SET hits='$new_hits' WHERE id='$id'");
?>
ahora dentro de config.php va asi..

Código:
<?
mysql_pconnect("localhost","user","contraseña");
mysql_select_db("base_datos");
?>
<? 
$url_site="http://mipaginaweb.com/"; // TYPE YOUR SITE ADDRESS including slash "/" //
?>
como y donde extamente lo agrego :)
__________________
Si tú sabes lo que vales, ve y consigue lo que mereces.
  #7 (permalink)  
Antiguo 02/09/2010, 20:32
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Intrusos redireccionan mi página a otra pagina

Amigo, ese código que tienes muestra lo que hay en la tabla "fblike".
En donde tienes que poner esas líneas que dije arriba es en el archivo que inserta todo a la base de datos, no el que lo muestra.
  #8 (permalink)  
Antiguo 02/09/2010, 20:33
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Intrusos redireccionan mi página a otra pagina

bueno seria bueno q leyeras un pokito sobre la seguridad en el desarrollo con php he aki hay un link q es bastantante explicado y sencillo seguridad php tiene dos partes en la segunda te hablan de la inyeccion sql lee los comentarios que hicieron que le aportan mas al articulo esta buieno y en la web hay mas documentacion sobre esto tambien como concejo usa mysql_real_scape_string en tu consulta para que prevengas la injeccion sql suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 02/09/2010, 20:38
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Intrusos redireccionan mi página a otra pagina

Eso, haz lo que dice carlos si no entiendes nada :D
Y el método de mysql_real_escape_string es básicamente el mismo, pero igual existen diferentes formas de implementarlo, yo uso así;

Código PHP:
Ver original
  1. //Primero le asigno una variable al campo del formulario obtenido
  2. $mensaje = mysql_real_escape_string(htmlentities($_POST['mensaje']));
  3.  
  4. //Ahora inserto la variable con el mensaje
  5. mysql_query("INSERT INTO mensajes (mensaje) VALUES ('$mensaje')");

Y es todo :)
  #10 (permalink)  
Antiguo 02/09/2010, 22:00
Avatar de BekoxD  
Fecha de Ingreso: mayo-2008
Ubicación: Perú
Mensajes: 220
Antigüedad: 16 años
Puntos: 11
Respuesta: Intrusos redireccionan mi página a otra pagina

Cita:
//Primero le asigno una variable al campo del formulario obtenido
$mensaje = mysql_real_escape_string(htmlentities($_POST['mensaje']));

//Ahora inserto la variable con el mensaje
mysql_query("INSERT INTO mensajes (mensaje) VALUES ('$mensaje')");
A reemplazo de "mensaje" que pongo?
__________________
Si tú sabes lo que vales, ve y consigue lo que mereces.
  #11 (permalink)  
Antiguo 02/09/2010, 22:06
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Intrusos redireccionan mi página a otra pagina

Donde dice "$_POST['mensaje']", mensaje sería el nombre del campo que quieres evitar que inyecten, por ejemplo si tienes un código de tipo:
<input type="text" name="nombre">
El codigo PHP seria:
$nombre = mysql_real_escape_string(htmlentities($_POST['nombre']));

Ahora, en el codigo de la query, decimos que inserte en la tabla "mensajes" en el campo "mensaje" el valor "$nombre", de esta forma:
mysql_query("INSERT INTO mensajes (mensaje) VALUES ('$mensaje')");

Si quieres insertar mas valores en mas campos de una tabla, es asi:
mysql_query("INSERT INTO mensajes (nombre,mensaje) VALUES ('$nombre','$mensaje')");

Etcetera :)
  #12 (permalink)  
Antiguo 02/09/2010, 22:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Intrusos redireccionan mi página a otra pagina

bueno hermano yo le deje unos link de manera que puedas leer porq ya el compañero te ha dicho algo mas o menos y es bueno que leas un poco y asi aprendes un poco ahi en el link te dan mas o menos la forma de realizar el codigo de todas maneras el compañero te dejo una sentencia q esta clara
Cita:
$mensaje = mysql_real_escape_string(htmlentities($_POST['mensaje']));
analizala y veras saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #13 (permalink)  
Antiguo 02/09/2010, 22:10
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Intrusos redireccionan mi página a otra pagina

Veo que Beko tiene poca experiencia en PHP, y pues, le recomiendo que lea por aquí en el foro, en Google, y en PHP.net sobre todo lo que tiene que ver formularios... El cómo funciona un formulario, cómo recibir información de éste, cómo hacer uso de $_POST y $_REQUEST, etc..
Creo que te falta por aprender ;)
  #14 (permalink)  
Antiguo 02/09/2010, 23:08
Avatar de BekoxD  
Fecha de Ingreso: mayo-2008
Ubicación: Perú
Mensajes: 220
Antigüedad: 16 años
Puntos: 11
Respuesta: Intrusos redireccionan mi página a otra pagina

Muchas gracias amigos por todo...
En verdad aun estoy iniciando en esto, PHP me recuerdan las matematicas cuando estaba en colegio.. xD

Al fin solucione el problema con estos dos codigos..

Código PHP:
$mensaje=htmlclean($_POST['mensaje']); 
Código PHP:

// Funcion de limpieza
function htmlclean($input) {
    
$sb_convert $input;
    
$sb_input = array("<",">","(",")");
    
$sb_output = array("&lt;","&gt;","(",")");
    
$output str_replace($sb_input$sb_output$sb_convert);
    
$output addslashes($output);
    return 
$output;

Gracias FDW
__________________
Si tú sabes lo que vales, ve y consigue lo que mereces.
  #15 (permalink)  
Antiguo 02/09/2010, 23:16
Avatar de TECKNOCK  
Fecha de Ingreso: agosto-2010
Mensajes: 80
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Intrusos redireccionan mi página a otra pagina

Mira una solucion sencilla es que tu pagina revise el TEXTO antes de guardarlo.

Buscamos solo un fragmento de esa CADENA en todo el texto conl a funcion strpos(), si se encuentra ese fragmento NO se guarda el TEXTO.

Te aconsejo utilizar el fragmento http-equiv. Algo así:
Código PHP:

$Tu_Texto 
= [El texto que se debe revisar];

if(
strpos($Tu_Texto"http-equiv")) //busca "http-equiv" en $TuTexto

   
// no insertas nada de nada.
}
else
{
  
//guardas $Tu_Texto normalmente.

  #16 (permalink)  
Antiguo 03/09/2010, 18:51
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Intrusos redireccionan mi página a otra pagina

Cita:
Iniciado por BekoxD Ver Mensaje
Muchas gracias amigos por todo...
En verdad aun estoy iniciando en esto, PHP me recuerdan las matematicas cuando estaba en colegio.. xD

Al fin solucione el problema con estos dos codigos..

Código PHP:
$mensaje=htmlclean($_POST['mensaje']); 
Código PHP:

// Funcion de limpieza
function htmlclean($input) {
    
$sb_convert $input;
    
$sb_input = array("<",">","(",")");
    
$sb_output = array("&lt;","&gt;","(",")");
    
$output str_replace($sb_input$sb_output$sb_convert);
    
$output addslashes($output);
    return 
$output;

Gracias FDW
Bueno el codigo, PEEEERO, lineas realmente innecesarias....
Solo reemplaza esto:
Código PHP:
$mensaje=htmlclean($_POST['mensaje']); 
Simplemente por esto:
Código PHP:
$mensaje mysql_real_escape_string(htmlentities($mensaje)); 
Y borra la funcion, y todo listo..

Etiquetas: etiquetas, soporte
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 12:22.