un mini peke tuto q hize en otra comunidad para entender mejor las html injections.
como os digo siempre, si alguien sabe k me ekivoke en algo avisarme , para corregirlo :=).
Saludos¡
Las Html Injection, es un fallo muy comun en los programadores, que no tienen mucha referencia de las malas intenciones de los usuarios, ellos simplemente hacen que funcione- Pero no se fijan en la Seguridad.
Filtros Php para no Interpretar Codigo Html y Dejarlo en Texto Plano.
Veremos Primero un Caso Vulnerable y Luego como Solucionarlo.
Anexo:
Para Poder Entender el Codigo es Necesario lo Basico de Html, y los tipos de Envio de las Cabezeras Http, Get, Post.Ej Real:
- Creamos un Formulario Tipico Vulnerable:
<HTML>
<BODY>
<FORM METHOD="post" ACTION="resive.php">
<p align="center"> </p>
<p align="center"><strong>Injeccion Html By OzX [New-Bytes/NuKe] </strong></p>
<p align="center">
<input type="text" name="nombre" size="30" value="Ingresa Tu Codigo Html">
</p>
<p align="center">
<input type="submit" value="Enviar" name="enviar">
</p>
</FORM>
</BODY>
<HTML>
- Resive.Php
<html>
<body>
<center>
<?
echo $_POST['nombre'] ."<br>";
echo "<a href='index.php'>volver</a>"
?>
</center>
</body>
</html>
- Resultado:
- Ahora Ingresamos un Codigo Html.
<center><br><br><br><font size=10>OZX INJECCIONES HTML</font></center>
- Resultado:
- Porque Pasa Esto?- Podriamos Decir que El formulario Antes Posteado (codigo) Tiene por Defecto habilitado Html, por lo Cual hay que decirle que no Permita Codigos Html, y Que estos Sean Transformados en Texto Plano, Mas bien "Convertir" el Codigo en Texto Plano.
Sin Su Interpretacion en Html.
- Entonces Si este fuese Un Libro de Visitas , en donde registre toda esta informacion en una base de datos, y esta luego sea llamada, los codigos, van a ser "interpretadoS" y la Injeccion Html Tendra Efecto.
Ahora veamos como Solucionarlo.Index.php = Donde esta el Formulario
Resive.php = Donde Llegan los Datos y Son Mostrados.
Editamos Resive.php y Editamos y Agregamos lo Siguiente:
<html>
<body>
<? $codigo=htmlentities($_POST['nombre']); //ANTI HTML INJECTIONS?>
<center>
<?
echo "<b>Sin htmlentities</b>: ". $_POST['nombre'] ."<br>";
echo "<b>Con htmlentities</b>: "."$codigo";
echo "<a href='index.php'><br>volver</a>"
?>
</center>
</body>
</html>
Explicacion:
-
<? $codigo=htmlentities($_POST['nombre']); //ANTI HTML INJECTIONS?>- Con htmlentities, Dejamos toda La informacion Introducida en el Formulario, en Texto Plano, Asi no Tendra ningun Efecto en la Pagina.
Luego:
echo "<b>Sin htmlentities</b>: ". $_POST['nombre'] ."<br>";l
- Aqui Mostramos Directamente sin el Filtro HtmlEntities, y Asi El Codigo Htm Sera Interpretado en la Plataforma del Navegador.
Siguiente Linea:
echo "<b>Con htmlentities</b>: "."$codigo";- Aqui se Aplica el Filtro, y Llamamos a la Variable Codigo, que tiene el Filtro Incorporado.
- Resultado:
By OzX