Comunidad de diseño web y desarrollo en internet online

problema con xss ejecuta el .ajax()

Citar            
MensajeEscrito el 03 Jul 2012 05:27 pm

Código Javascript :

<script>
$(document).ready(function() {
$("#mpenvio").click(function() {
var texto = $("#mensajep").val();
var para = $("#para").val();
var crear = 'mensajep=' + texto + '&para=' + para;
var enviar = 'mp.php';
$.ajax({
type: "POST",
url: enviar,
data: crear,
success: function() {
$('#exito').append(''+texto+'');
Limpiar();
}
});
return false;
});
});
</script>


lo que hago es enviar los comentarios en tiempo real sin recargar pasa que cuando alguien inserte un codigo html por ejemplo:
<script>window.location="hola.php"</script>

el .ajax() lo ejecuta...

como puedo evitar para que no me pase esto.?

Por js_toni

93 de clabLevel



Genero:Masculino  

programar

firefox
Citar            
MensajeEscrito el 03 Jul 2012 07:22 pm
lo ejecuta porque no lo trata como html sino como un string de caracteres lo que tendrias que hacer es con php validar DriveOP paso una liga hacer poco con un problema de otro usuario http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/htmLawed_README.htm, si lo que quieres es que no se ejecute el ajax tendrias que validarlo con javascript que no es la opcion porque cualquiera podria apuntar a tu archivo sin necesidad de ejecutar el ajax es mejor validar el PHP

Por ldgmmorales

Claber

142 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Jul 2012 02:07 am
con php remplazo cual quier htmlentities. (con esto no hay problema de xss en la bd)

creo que con usar expreciones en jQuery para remplazar su respectivas htmlentities dentro de un #div selecionado.

Se puede de ese modo para que no ejecute el codigo ?

Podrias dar un ejemplo de una exprecion para remplazar < " > esas tres caracteres.

Por js_toni

93 de clabLevel



Genero:Masculino  

programar

firefox
Citar            
MensajeEscrito el 04 Jul 2012 03:47 pm
no la verdad ahi si no se usar expresiones regulares la vdd, pero si ya lo estas convirtiendo en PHP con htmlentities porque no lo regresas del php con un echo a tu jquery via el success y lo imprimes

success: function(datos) {
$('#exito').append(''+datos+'');
Limpiar();
}

aqui DATOS va a recibir el ECHO de tu PHP con el codigo ya formateado checale asi ahora si ese div que se llama EXITO solo va a contener el codigo que le vas a mandar y no otra cosa puedes usar .text() en lugar de append

Por ldgmmorales

Claber

142 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Jul 2012 04:38 pm
Esto es un ejemplo:

Código Javascript :

texto = texto.replace(/</g,"&lt;");
texto = texto.replace(/>/g,"&gt;")

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 04 Jul 2012 06:17 pm
DriverOp tendras algun tutorial de expresiones regulares ? que me puedas compartir ! :D

Por ldgmmorales

Claber

142 de clabLevel

1 tutorial

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Jul 2012 08:29 pm
Por ejemplo DriverOp ?

yo solo quiero remplazar los carecteres esos que estan dentro del div#exito ?

Por js_toni

93 de clabLevel



Genero:Masculino  

programar

firefox
Citar            
MensajeEscrito el 05 Jul 2012 12:25 pm
No puedes hacer un reemplazo del texto contenido dentro de un <div> porque ese texto ya lo interpretó el navegador, por lo tanto si había código malicioso, el navegador ya lo ejecutó. Lo debes hacer antes de ponerlo dentro del <div>.

Aún así suscribo a lo dicho por ldgmmorales. Debería "limpiar" los datos enviados por el visitante antes de hacer algo con ello, es decir, hacer la limpieza cuando lo recibes en el servidor.

ldgmmorales:
Tutoriales hay muchos en la red. Considero que cualquiera te servirá. Pero lo que sí te voy a recomendar es un programa donde puedes probar tus expresiones regulares de forma cómoda sin tener que escribir un programa en JavaScript o PHP (lo cual suele ser tedioso y además no te proporciona toda la ayuda si estás aprendiendo). El programa en cuestión es "The Regex Coach". Y de paso ponle un mail al autor para que lo siga manteniendo porque se está quedando un poco resagado respecto a los SO en los que puede funcionar.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 05 Jul 2012 05:06 pm
Gracias DriverOp por el link claro yo le pongo un mail al autor muchas gracias de nuevo !

Por ldgmmorales

Claber

142 de clabLevel

1 tutorial

Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.