Foros del Web » Programando para Internet » PHP »

Evitar ataques con HTML

Estas en el tema de Evitar ataques con HTML en el foro de PHP en Foros del Web. Hola denuevo! Tengo otro problema tengo un formulario q añade datos a mysql, pero cuando añaden un codigo html y despues se imprimen los datos ...
  #1 (permalink)  
Antiguo 02/01/2011, 14:05
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Evitar ataques con HTML

Hola denuevo! Tengo otro problema tengo un formulario q añade datos a mysql, pero cuando añaden un codigo html y despues se imprimen los datos me jode la web. Hagan de cuenta si añaden este codigo por el formulario me reedirecciona a otra web:

Código HTML:
< META HTTP-EQUIV="Refresh" CONTENT="3; URL=tuweb.com">
< script>alert('Hacked by Zergio');
(PONGAN EL < PEGADO A LO DEMAS YO LO SEPARE PORQUE SINO SE ME REDIRECCIONABA Y ME MANDABA LA ALERTA..)
Saludos, z3rgi0x/sadrek ;)
Este es el codigo de mi formulario:

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Estacion Rap</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<script type="text/javascript">var clear="images/clear.gif";</script>
<script type="text/javascript" src="unitpngfix.js"></script>
<![endif]-->
</head>
<body>
<?php
$conexion 
mysql_connect("sql201.byethost15.com""b15_5229524""09392181");
mysql_select_db("b15_5229524_estacion"$conexion);

$queEmp "SELECT * FROM Discos ORDER BY id DESC"
$resEmp mysql_query($queEmp$conexion) or die(mysql_error());
$totEmp mysql_num_rows($resEmp);
 if (
$totEmp0) {
    while (
$rowEmp mysql_fetch_assoc($resEmp)) {
 
    }
}
?>
<!-- BEGIN wrapper -->
<div id="wrapper">
  <!-- BEGIN header -->
   <?
include('arriba.php'); ?>
  <!-- END header -->
  <!-- BEGIN body -->
  <div id="body">
    <!-- BEGIN content -->
    <div id="content">
      <!-- begin post -->
      <div class="first post">
        <div class="r">
          
         
          
          
          <?php 

//coloca la coneccion correcta a mysql aqui 
$conexion mysql_connect("sql201.byethost15.com""b15_5229524""09392181");  
//selecciona la base de datos en la que quieres trabajar 
//y si esa es la unica base de datos que tienes, no vuelvas a abrir coneccion con mysql 
//ni a seleccionar otra vez la db 
mysql_select_db("b15_5229524_estacion"$conexion);  


$queEmp "SELECT * FROM Discos ORDER BY id DESC";   
$resEmp mysql_query($queEmp$conexion) or die(mysql_error());  
$totEmp mysql_num_rows($resEmp);  
 if (
$totEmp0) {  
    while (
$rowEmp mysql_fetch_assoc($resEmp)) {  
     
    
//while vacio... 
   
    
}  
}  


 
//si esta coneccion es la misma que la de arriba, no hace falta incluirla 
 //y menos incluirla 3 o 4 veces  
//include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db  
//include('config');  


if ( $_POST['titulo'] ) {
$state false;  

if (
$_POST['action'] == "add" && $_FILES['archivo']['name'] != "") {   

//La subida de archivo dentro del condicional 
$ruta "./imagenes/" .time(). $_FILES['archivo']['name'];  
copy($_FILES['archivo']['tmp_name'], $ruta);  
echo 
"La imagen subio correctamente"
     
     
    
//VERIFICA A QUI: 
     
     
    //aqui conectas, denuevo pero al parecer a otra base de datos 
    
$conexion mysql_connect("host""user""pass");  
    
//pero a una tabla del mismo nombre 
    
mysql_select_db("b15_5229524_estacion"$conexion);  
    
//A $postear PUEDES DARLE UN VALOR MANUALMENTE PARA PROBAR Y QUE NO FALLE LA CONSULTA 
    
$postear $_SESSION[usuario];  
      
  
    
//session_start() debe estar precedido de la @ a esta altura del script 
    
@session_start();  

      
    
$que "INSERT INTO Discos (titulo, descripcion, imagen, descarga, enviado) ";  
    
$que.= "VALUES ('".$_POST['titulo']."', '".$_POST['descripcion']."', '".$ruta."', '".$_POST['descarga']."', '".$_SESSION['idusuario']."')";  
    
$res mysql_query($que$conexion) or die(mysql_error());  
    
$state true;  
     
     


  
}


}  


 
//SI INCLUDE() ES LA MISMA CONECCION A MYSQL QUE YA HICISTE NO ES NECESARIO 
//include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión  

/* 
if($_SESSION[level] == 1 or $_SESSION[level] == 3){  
echo '';  
}else{  
Header("Location: index.php");  

*/  

?>  
<?
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión

if($_SESSION[level] == or $_SESSION[level] == or $_SESSION[level] ==4)
{
echo 
'';

}else{
Header("Location: index.php");
}
?>
<form name="formulario" form id="insertar" enctype="multipart/form-data" method="POST" action="">  
  <p align="left" class="Estilo1">Añadir discos</p>
  <p align="left">&nbsp;</p>
  <p align="left">Titulo (Autor - Nombre del disco)</p>
  <p align="left"> 
    <input name="titulo" type="text" id="nombre" size="50" />
  </p>
  <p align="left"><br />  
    Canciones</p>
  <p align="left">
    <textarea name="descripcion" id="textarea" cols="45" rows="5"></textarea>
  </p>
  <p align="left"><br />  
    Imagen(Caratula Frontal)</p>
  <p align="left">
    <input type="file" name="archivo" id="archivo" />
  </p>
  <p align="left"><br />  
    Link de descarga(Empezando por http://)(Los archivos deben estar subidos en Subirfacil.com si no estan ahi, tu post sera borrado)</p>
  <p align="left">
    <input type="text" name="descarga" id="textfield" />
    <br />
  </p>
  <p align="left"><br />  
      <input type="submit" name="Submit" value="Enviar disco" />
      <br />  
      <input type="hidden" name="action" value="add" />
      <br />  
            </p>
</form>  

<?php  



if ($state) {  
echo 
"<p /><em>Disco agregado</em></p>";  



?></div>
      </div>
      <!-- end post -->
      <!-- begin post -->
      <!-- end post -->
      <!-- begin post -->
      <!-- end post -->
    </div>
    <!-- END content -->
    <!-- BEGIN sidebar -->
     <?
include('menu.php'); ?>
    <!-- END sidebar -->
    <div class="break"></div>
  </div>
  <!-- END body -->
  <!-- BEGIN footer -->
  <?
include('abajo.php'); ?>
  <!-- END footer -->
</div>
<!-- END  -->
</body>
</html>
  #2 (permalink)  
Antiguo 02/01/2011, 14:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Evitar ataques con HTML

Usa strip_tags para evitar que te añadan código html.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 02/01/2011, 14:59
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Evitar ataques con HTML

lo he intentado asi pero no funciona:

Código PHP:
 <?

$consulta 
'SELECT titulo,descripcion,fecha,imagen,enviado,descarga FROM Discos WHERE id=' $_GET['id'];  
$resEmp mysql_query($consulta$conexion) or die(mysql_error());
$totEmp mysql_num_rows($resEmp);
 if (
$totEmp0) {
    while (
$rowEmp mysql_fetch_assoc($resEmp)) { echo script_tags("".$rowEmp['titulo']."<br>");     }
?>
  #4 (permalink)  
Antiguo 02/01/2011, 15:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Evitar ataques con HTML

Cita:
Iniciado por Arcana Ver Mensaje
lo he intentado asi pero no funciona: [...]
script_tags????

deberías leer el manual, y de paso leer bien lo que te escriben...
Cita:
Usa strip_tags para evitar que te añadan código html.
http://php.net/strip_tags
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 02/01/2011, 20:27
 
Fecha de Ingreso: mayo-2010
Mensajes: 185
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Evitar ataques con HTML

Ya lo pude resolver hice algo asi:

Código PHP:
$titulo stripslashes($_POST["titulo"]);
$titulo strip_tags($titulo);
//despues añadi la variable $titulo 

Etiquetas: arcana, html, inyección
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 21:32.