Seguridad php-mysql para dummies
#1
Escrito 10 mayo 2014 - 01:50
Estoy aprendiendo php-mysql gracias a los videos de Cesar Cancino (un fregonazo como diríamos en mi rancho).
Ya pasé todos los videos del curso php y llevo como veintitantos del curso de poo.
He aprendido mucho y he desarrollado un par de sitios pero hay un tema que César siempre menciona que después veremos,al que no he llegado y me preocupa mucho: La seguridad.
Actualmente estoy trabajando en un proyecto para denunciar, por lo que de antemano sé que resultará incómodo para más de uno.
Muchas veces me he atorado y recurrido a este foro, en donde he tenido la fortuna de conocer personas super conocedoras, con la disposición de ayudar, así es que espero que puedan compartir tips de seguridad php-mysql para pricipantes.
He investigado y no encontré mucho en la red. Lo que hay, definitivamente es "muy elevado" para alguien que comienza.
Necesito acciones concretas explicadas para principiantes. Por ejemplo:
1. Crear un usuario de la base de datos solo con los permisos básicos (ejemplo: consultar, insertar, modificar)
2. Entrecomillar los números en las consultas
Considero que este tema podría resultar de interés para muchos.
De antemano, mil gracias!
#2
Escrito 11 mayo 2014 - 11:51
¿Qué base de datos usaras?
#3
Escrito 12 mayo 2014 - 06:08
Es MySql y aunque ya pase un videotutorial de procedimientos almacenados, soy principiante (muy). Estoy mucho más familiarizada con el phpmyadmin que con MySQL-front
Ya voy bastante adelantada (Poo sin Procedimientos almacenados) pero si me dices que es conveniente (más seguro / menos vulnerable) con procedimientos almacenados tendré que aplicarme y aprender.
Cómo ves? Intento rehacerlo todo?
Algún otro tip o sugerencia?
De verdad me preocupa el tema de la seguridad.
Lo dicho: Eres un tipazo!!
#4
Escrito 12 mayo 2014 - 06:28
La seguridad es un tema muy importante como para despreciarla y relajarla. O se hace las cosas bien o no se hacen. A medias, y a dummie, no va.
Yo en el ámbito web no puedo ayudarte mucho. No estoy familiarizado pero de lo que toco de oido las cosas van por:
1) Evitar la inyección de código
2) Emplear métodos seguros cuando se utiliza $_POST y $_GET
3) Que el sitio corra sobre HTTPS.
Eso sólo para empezar, y en cuanto a lo más cercano hace a PHP.
No hay que despreciar que también la seguridad vaya por el servidor y su configuración. Por tanto se debe configurar apropiadamente. Prevenir ataques por medio de SSH, DDoS, etc.
En fin: que la seguridad no pasa solamente por PHP sino que los que estarán ofreciendo el hosting también hagan las cosas bien y garanticen de que el sitio no se caiga.
Saludos,
#5
Escrito 13 mayo 2014 - 09:01
Como siempre, gracias mil por tu disposición poliburro!
Es MySql y aunque ya pase un videotutorial de procedimientos almacenados, soy principiante (muy). Estoy mucho más familiarizada con el phpmyadmin que con MySQL-front
No se que tan viable para ti sea el rehacer todo lo que llevas hecho. Se me ocurre que de momento sigas estas recomendaciones en tu aplicación:
* Nunca concatenes o muestres lo que el usuario capturó en un mensaje de salida.
Si debes mandar un mensaje de error por datos mal capturados no coloques algo como esto:
echo "el usuario $usuario es erróneo":
mejor haz algo del estilo
echo "El usuario proporcionado es incorrecto por favor verifique";
* Para el manejo de consultas en tu aplicación debes extremar precauciones agregando una función que elimine de los campos de captura valores como "where", "like", "'", etc.
Este problema se resuleve usando procedimientos almacenados. Pero de ti dependerá decidir comenzar a usarlos.
* Nunca muestres mensajes de error de la base de datos.
Debes capturar los mensajes de error de la base de datos y guardarlos en un log para ti, o hacer que php te los reporte de inmediato, luego, al usaurio mostarle algo como
"Ocurrió un error al realizar la operación, por favor verifique sus datos o intente más tarde"
* Usa OOP.
No conozco los cursos de Cesar pero creo que están orientados a ser procedurales. Yo te aconsejaría que usaras solo programación orientada a objetos y de ser posible template engines parar separar el código de la presentación.
Bueno a groso modo esto es lo que me viene a la mente por el momento. Saludos.
#6
Escrito 14 mayo 2014 - 12:38
De php existen muchos. Yo voy a proponerte uno, que es el que utilizo yo, por las siguientes razones:
Symfony 2.
1. http://blog.solucion...tilizar-symfony
2. Existe una ingente cantidad de información en castellano para aprender: Manuales, Tutoriales, Videos: http://symfony.es/documentacion/
3. Una gran comunidad: https://groups.googl...orum/symfony-es
Un saludo.
#7
Escrito 15 mayo 2014 - 08:29
Una vez que controlas la programación orientada a objetos, quizás deberías pensar en no reinventar la rueda. Ya programadores que saben muchísimo se han preocupado de los problemas más comunes en la programación y han aportado soluciones que funcionan, incluida, por ejemplo, la seguridad. A esto se le llama framework.
De php existen muchos.
Agradezco muchísimo tu respuesta y el tip apicito... suena interesante. Voy a ver si me dan mis escasos conocimientos para trabajar con framework...
Ahí te cuento como me va!
Saludos!!
#8
Escrito 15 mayo 2014 - 08:42
Yo tampoco sé que tan viable sea comenzar de nuevo poliburro, pero de verdad me preocupa el tema y tengo que hacer algo.No se que tan viable para ti sea el rehacer todo lo que llevas hecho. Se me ocurre que de momento sigas estas recomendaciones en tu aplicación
Como ves la propuesta de un framework? (ver la respuesta de apicito)
Me encantaría tener opiniones sobre lo más conveniente (y viable) para alguien que comienza.
No tengo más conocimientos que lo que he aprendido con los videotutoriales de César y a través de este bendito foro.
Nuevamente gracias y bonito día!
#9
Escrito 15 mayo 2014 - 10:17
Hola nuevamente! Estaba feliz porque siguiendo tu recomendación de considerar usar un framework, me encontré este curso de http://www.cesarcanc...cion-n1331.html y no pasé del primer video... ni siquiera lo puede instalar!!Una vez que controlas la programación orientada a objetos, quizás deberías pensar en no reinventar la rueda. Ya programadores que saben muchísimo se han preocupado de los problemas más comunes en la programación y han aportado soluciones que funcionan, incluida, por ejemplo, la seguridad. A esto se le llama framework...
Ya pedí auxilio en este topic http://www.delphiacc...mework-2-(-zf2-)/
Esperemos a ver si alguien me puede desatorar!
#10
Escrito 15 mayo 2014 - 10:46
#11
Escrito 15 mayo 2014 - 05:59
Hay una versión open source y libre de zend.
http://framework.zend.com/
Gracias poliburro pero estoy tratando de seguir el "get started" de la página frameworkzend.com y no logro instalarlo (tampoco pude siguiendo el video 1 de Cesar)
Como explica en el "get started", una vez en la carpeta creada para mi proyecto en la consola:
git clone git://github.com/zendframework/ZendSkeletonApplication.git
cd ZendSkeletonApplication
php composer.phar install
Después de la primera linea me manda:
"git" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.
Así es que comienzo a pensar que este tema del Zend no es para mi... parece que está muy elevado para mis conocimientos ¡no lo puedo ni instalar!
¿alguna sugerencia? o de plano me rindo?
Saludos!