Por ejemplo, protegernos contra Inyección de código SQL, controlar los tipos de archivos que se suben en un upload, y que más...?
Se escuchan ideas de Cosas a tener en cuenta para un script PHP seguro...
![de acuerdo](http://static.forosdelweb.com/fdwtheme/images/smilies/dedosarriba.png)
![apachar ojo](http://static.forosdelweb.com/fdwtheme/images/smilies/wink.png)
![Adios](http://static.forosdelweb.com/fdwtheme/images/smilies/adios.gif)
| |||
Re: Seguridad en PHP Uffff, por dónde empezar... register_globals OFFFFFFFFFFFFFFFFFFFFFFFFFF Creo que a estas alturas ya debería ser obvio, pero sigue habiendo gente que hace que sus programas dependan de eso. Controlar inyección de cabeceras en formularios de correo: No permitir caracteres \r o \n en campos que deberían ser de 1 sola línea ("asunto", "de", etc). NO confiar en el usuario: El programa tiene que considerar cualquier interacción con el "mundo exterior" como peligrosa y no confiable. Creo que esta es la "regla de oro"... Usar transacciones en las BD Tenemos que hacer todo lo que esté a nuestro alcance a la hora de mantener la integridad de los datos, las transacciones son una buena forma. Las tablas MyISAM de MySQL no soportan transacciones, pero sí las soportan las tablas InnoDB. Si hay que hacer varias "guardadas", mejor juntarlas en una transacción. Eso se me ocurre por ahora... |
| ||||
Re: Seguridad en PHP Tenes muuucho a tener en cuenta, pero inicialmente, contestándote: 1- protegernos contra Inyección de código SQL, 2- controlar los tipos de archivos que se suben en un upload. 1- Lo mejor es usar las funciones que te da, en este caso, mysql (en si la dll de php que conecta con la db). Hay funciones como mysql_real_escape_string con eso ya estarías cubierto. 2- Como general y básico usa los headers propios de los archivos NO valides jamás por extensión, si es imagen/flash tenes la dg, sino siempre hay algun script que ayude (ej, para leer un mp3, o un doc). Y como dice alvin, nunca hay que confiar en el usuario pero con tener los datos de entrada controlados contra sql inyección y xss ya estas dando un gran paso.
__________________ Mi punto de partida es Que Bueno Lo Nuevo |
| ||||
Re: Seguridad en PHP Muchas gracias a ambos por las ideas y consejos, encontré por ahí una función (que adjunto abajo) para hacer segura una consulta a BBDD, simplemente usandola ya estaría protegido contra cualquier tipo de injección de SQL, verdad? Código PHP: |
| ||||
Re: Seguridad en PHP Cita: En vez de addslashes deberías usar *_escape_string, que es mejor para bases de datos, si es Mysql mysql_real_escape_string
Iniciado por Anarninquë ![]() Muchas gracias a ambos por las ideas y consejos, encontré por ahí una función (que adjunto abajo) para hacer segura una consulta a BBDD, simplemente usandola ya estaría protegido contra cualquier tipo de injección de SQL, verdad? Código PHP:
__________________ |
| ||||
Re: Seguridad en PHP Así que esta sería nuestra función para prevenir sql inyections:
Código:
Correcto? alguna sugerencia mejor?function limpiar_sql($var) { $var = mysql_real_escape_string(trim($variable)); return $var; } Digo para dejar plasmada una linda solución (para que sirva mas que a mi a todos los que en algún momento lleguen a este post ![]() |
| ||||
Re: Seguridad en PHP Hola Anarninquë, encontre estos articulos de seguridad para PHP: http://64.233.169.104/search?q=cache...hp_seguridad_I http://64.233.169.104/search?q=cache...p_seguridad_II http://64.233.169.104/search?q=cache..._seguridad_III |
| ||||
Re: Seguridad en PHP Gracias hgp147 por enviar esos artículos, lamentablemente no me permite cargarlos :s si los tienes en tu pc me los enviarías por e-mail? ![]() Aprovechando para continuar con los temas de seguridad en php, consulto sobre que precausiones habría que tomar en cuenta a la hora de hacer una conexión a la base de datos, yo muchas veces tengo un archivo que incluyo en las páginas en el que me conecto de la forma mas "común y simple": Código PHP: ![]() Saludos, comento que mi idea es al final de este thred hacer una recopilación de varios consejos y tips de seguridad a la hora de programar ![]() Incluso se podría poner como una FAQ ![]() ![]() Saludos ![]() |
| |||
Re: Seguridad en PHP display_errors 0 - no hay que dar pistas al enemigo log_errors 1 - pero tienes que poder ver los mensajes de error usar trigger_error() en lugar de die() para registrar los errores de ejecucion. Código PHP: |
| ||||
Re: Seguridad en PHP Muchas gracias DarkJ por el consejo, una pregunta, cual es bien la salida de trigger_error? Me explico, que genera? supongo que nada por pantalla, genera un archivo con el log en el server? dónde? Gracias por la info! ![]() |