Foros del Web » Programando para Internet » PHP »

Seguridad PHP. inputs, SQL injection, XSS

Estas en el tema de Seguridad PHP. inputs, SQL injection, XSS en el foro de PHP en Foros del Web. Hola como están ? Bueno, me dirigo a ustedes por que tengo muchas dudas en cuanto a la seguridad de los input del formulario, inyecciones ...
  #1 (permalink)  
Antiguo 23/11/2011, 11:29
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
Seguridad PHP. inputs, SQL injection, XSS

Hola como están ?
Bueno, me dirigo a ustedes por que tengo muchas dudas en cuanto a la seguridad
de los input del formulario, inyecciones sql, ataques xss, etc.

Estoy creando un proyecto, y estoy tratando de incorporar toda la seguridad posible.
Pero mientras mas cosas leo, mas cosas nuevas hay que tener presente.

Alguien me podria dar una mano y aconsejarme de estas cosas?

eh leido en el manual de php y hay varias funciones por el asunto de sql injection.

las funciones :

1- addslashes
2- mysql_real_escape_string ... etc...

en cuanto a ataques xss que cosas debo tener en cuanta.. ..

porfavor.. meintras mas datos me den .. se los agradeceria !
  #2 (permalink)  
Antiguo 23/11/2011, 12:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

Yo creo que antes de tomar "precaución" sobre un tema deberías profundizar sobre él.

Así que simplemente pregunto, ¿sabes exactamente lo que hace un ataque de SQL o XSS, incluso CSRF?

La solución no consiste en usar cientos de funciones, sino que debes comprender el problema para entender lo que realizan dichas funciones.

Finalmente lo que aprendas al respecto no solo te va a ayudar en tu proyecto, también en tu carrera, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/11/2011, 12:29
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 6 meses
Puntos: 48
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

mysql_real_escape_string le agrega slashes a un parametro que estes pasando ej:
http:// ejemplo.com/?usuario=ccsaiKo

uno cuando recibe el parametro usuario muestra informacion relevante respecto a ese usuario y envia una consulta a una base de datos algo asi:
select * from usuarios where user_name='ccsaiKo'

pero que pasa si uno modifica la url y pone algo como esto:
http:// ejemplo.com/?usuario=ccsaiKo' or ''='
la consulta te quedaria algo asi:
select * from usuarios where user_name='ccsaiKo' or ''=''

y traerias toda la informacion de todos los usuarios.
con mysql_real_scape_string agregas slashes a un parametro(cuando se agrega un slash le dices que es literal)
tu consulta quedaria asi:
select * from usuarios where user_name='ccsaiKo' or \'\'=\''

asi ahora buscara un usuario que se llame: ccsaiKo' or ''='

ahora si envias una consulta de un numero a tu base de datos debes comprobar que el dato que recibes sea realmente un numero.

con respecto a XSS se usa en chat o en comentarios(como este por ejemplo).
XSS solo afecta al cliente y no es para robar datos del servidor como si lo es una inyeccion sql.
cuando uno envia un comentario a una base de datos despues actualizas la pagina y aparece ese comentario pero que pasa si yo envie el siguiente comentario:
<script>window.location='http://www.ejemplo.com'</script>

cuando cargue la pagina me va a mostrar ese comentario pero el navegador interpreta ese comentario como un script y te transfiere a la pagina ejemplo.com. para evitar ataques XSS debes transfornar el comentario al momento de imprimirlo. Yo uso la funcion htmlspecialchars para transformar el texto( http://php.net/manual/es/function.htmlspecialchars.php )
y quedaria haci el texto anterior

&ltscript&gtwindow.location='http://www.ejemplo.com'&lt/script&gt

y el navegador lo interpreta pero no como script sino como texto y te lo imprime como texto.

Última edición por Rodrhigo; 23/11/2011 a las 17:47
  #4 (permalink)  
Antiguo 23/11/2011, 20:45
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

Cual es la diferencia de mysql_real_escape_string y addslashes? ..
osea .. las dos escapan caracteres... .. cuando usar una y cuando la otra. ?
  #5 (permalink)  
Antiguo 23/11/2011, 20:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

Cita:
Iniciado por ccsaiKo Ver Mensaje
Cual es la diferencia de mysql_real_escape_string y addslashes? ..
osea .. las dos escapan caracteres... .. cuando usar una y cuando la otra. ?
Me pregunto si puedes leer aunque sea un poco de lo que el manual dice.

http://php.net/mysql_real_escape_string
http://php.net/addslashes
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 23/11/2011, 20:57
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

Cita:
Iniciado por pateketrueke Ver Mensaje
Me pregunto si puedes leer aunque sea un poco de lo que el manual dice.

[url]http://php.net/mysql_real_escape_string[/url]
[url]http://php.net/addslashes[/url]

Disculpa, en que consiste un ataque CSRF?
  #7 (permalink)  
Antiguo 23/11/2011, 21:01
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

Cita:
Iniciado por ccsaiKo Ver Mensaje
Disculpa, en que consiste un ataque CSRF?
te meten un archivo remoto
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -
  #8 (permalink)  
Antiguo 23/11/2011, 21:10
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

de todos modos no te rompas mucho con eso, hay script buenos como

http://scripts.ringsworld.com/form-p.../input-filter/

muy facil de utilizar, puedes filtrar todos los post y variables con solo pasarlos por el filtro.


modo de uso:
Código PHP:
<?php require_once("class.inputfilter_clean.php");

$filtralo = new InputFilter();

$_POST $filtralo ->process($_POST);
$_GET["name"] = $filtralo ->process($_GET["name"]);

etc... 
?>
en la pagina tenes mas ejemplos de uso.


saludos
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -
  #9 (permalink)  
Antiguo 23/11/2011, 21:21
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

Éste tema ha sido discutido muchas veces, ¿por qué no usas el buscador del foro? Apuesto a que es más sencillo y encontrarás la información que necesitas
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #10 (permalink)  
Antiguo 23/11/2011, 21:31
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: Seguridad PHP. inputs, SQL injection, XSS

AHORA QUE LO DICES, es verdad!!
incluso yo baje de aqui el manual del filtro ese, mmmmm
si che hay que usar el buscador!!

yo respondi por apresurado... sorry.
saludos
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -

Etiquetas: formulario, injection, inputs, mysql, seguridad, sql, xss
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 15:40.