Foros del Web » Programando para Internet » PHP »

Evitar javascript injection en PHP

Estas en el tema de Evitar javascript injection en PHP en el foro de PHP en Foros del Web. Hola a todos.- Tengo por ejemplo esta url: www.midominio.com/resultado.php?mensaje=hola Pero por ejemplo alguien malintencionado podría cambiar la url para meter javascript injection: www.midominio.com/resultado.php?mensaje=<h1 onmouseover=alert(1)>alertaXSS</h1> Para ...
  #1 (permalink)  
Antiguo 08/05/2019, 04:05
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 17 años, 5 meses
Puntos: 5
Evitar javascript injection en PHP

Hola a todos.-

Tengo por ejemplo esta url:

www.midominio.com/resultado.php?mensaje=hola

Pero por ejemplo alguien malintencionado podría cambiar la url para meter javascript injection:

www.midominio.com/resultado.php?mensaje=<h1 onmouseover=alert(1)>alertaXSS</h1>

Para evitarlo he puesto en resultado.php:

$_GET["mensaje"] = strip_tags($_GET["mensaje"]);

Y así ya me funciona perfectamente y ya solo me escribe el mensaje al eliminar todo el HTML.

Pero por si acaso me gustaría para darle más seguridad poder eliminar todo el posible javascript que haya en $_GET["mensaje"], ¿existe alguna manera en PHP para eliminar todo el javascript que haya en una cadena que se pasa por parámetro?

Muchas gracias
  #2 (permalink)  
Antiguo 08/05/2019, 15:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Evitar javascript injection en PHP

Verifica si esta función puede empezar a ayudarte. Te recomiendo que uses también las funciones o métodos innatos de php para evitar añadir código de inyección sql. Ejemplo en PDO puedes usar bindParam o bindValue, en la librería de mysqli si es que estás usando una base de datos mysql puedes usar mysqli_real_escape_string, entre otras cosas, solo necesitas leer los comentarios en la página oficial para que te den ideas de lo que puedes hacer.
__________________
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 11/05/2019, 01:04
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Evitar javascript injection en PHP

Cita:
Iniciado por schattenburg Ver Mensaje
Hola a todos.-

Tengo por ejemplo esta url:

www.midominio.com/resultado.php?mensaje=hola

Pero por ejemplo alguien malintencionado podría cambiar la url para meter javascript injection:

www.midominio.com/resultado.php?mensaje=<h1 onmouseover=alert(1)>alertaXSS</h1>

Para evitarlo he puesto en resultado.php:

$_GET["mensaje"] = strip_tags($_GET["mensaje"]);

Y así ya me funciona perfectamente y ya solo me escribe el mensaje al eliminar todo el HTML.

Pero por si acaso me gustaría para darle más seguridad poder eliminar todo el posible javascript que haya en $_GET["mensaje"], ¿existe alguna manera en PHP para eliminar todo el javascript que haya en una cadena que se pasa por parámetro?

Muchas gracias
estimado eso que descrives se llama ataque xss; que puedes apalear con un pequeño codigo y que hoy en dia todos los navegadores incluyen esa funcionalidad:

busca X-XSS Protection.
referencia: https://geekflare.com/apache-web-ser...ning-security/


Colocando en el inicio de tu código esto:
Código PHP:
header('X-XSS-Protection: 1; mode=block'); 
si quieres ir un paso mas alla:
Código PHP:
header('Referrer-Policy''no-referrer-when-downgrade');
header('X-Content-Type-Options''nosniff');
header('X-XSS-Protection''1; mode=block');
header('X-Frame-Options''DENY');
header('Strict-Transport-Security''max-age=31536000; includeSubDomains');
header('Content-Security-Policy'"style-src 'self'"); 
con eso estarías bastante protegido.
te recomiendo googlear las cabeceras de los header para que sepas para que son.

Saludos.

Etiquetas: funcion, html, injection, javascript, url
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 11:50.