2009-09-03 44 views
5

Como desarrollador web estoy usando PHP y sé que tengo que preocuparme por la seguridad pero cuando usas un framework, hay un montón de código y diseño que transmites pero que no has usado t código o diseño y, por ejemplo, estoy usando CakePHP.frameworks php y seguridad

  • por lo que en este caso con los marcos ¿cuánto debería preocuparme por la seguridad?

Respuesta

9

Siempre debe seguir respetando los principios básicos de la seguridad:

  • no confían en el usuario
  • nunca confíe en que el usuario

Qué significa algo:

  • filtrar/validar todo lo que viene a su aplicación
  • escapan cualquier salida.


uso de un marco no cambia mucho acerca de eso, excepto que:

  • salida a la base de datos a menudo ca alguna capa del marco, que debe hacer frente a escapar
  • Marcos menudo proporcionar soluciones de filtrado/validación; úselos ;-)
  • Los marcos suelen tener algunas pautas; léalos


Como comentario: usted ha dicho esto:

hay una gran cantidad de código y diseño que se relé en que lo hizo, pero no código o el diseño

Teniendo en cuenta que está utilizando un marco bien conocido que mucha gente usa, este código probablemente ha sido más probado/revisado que cualquier código que pueda escribir ;-)

Esa es una ventaja de código abierto, de hecho: usted no es el único responsable del código, y muchos ojos lo han visto, lo que significa que muchas manos lo han mejorado.

4

Hay muchas cosas que considerar cuando se trata de seguridad en una aplicación. Como dijo Pascal, es una buena idea usar un marco popular que haya tenido varias personas que lo estén viendo.

Veo algunas áreas de preocupación con respecto a CakePHP.

El primer problema es el usuario final. Debería esperar que alguien haga algo tonto en cada página que construya.Algunos ejemplos de esto son:

  • Una persona que hace clic en el botón enviar rápidamente una y otra vez. Esto puede sesgar o estropear su sistema de una manera si no tiene cuidado. La solución para esto no se basa en el marco, sino en su metodología de codificación y pruebas.
  • SQL Injection y otras cosas malas. Cualquier campo en una página puede ser potencialmente abusado, por lo tanto, cada elemento de la forma debe ser desinfectado. CakePHP tiene métodos simples para encargarse de estos problemas de seguridad. http://book.cakephp.org/view/153/Data-Sanitization
  • Las URL limpias son muy importantes. Nunca debe diseñar un sistema que permita a un usuario acceder directamente a las claves primarias de enteros. Por ejemplo, si tiene un sitio que tiene/show_user/2098, entonces alguien simplemente puede escribir show_user/2097 para ver la cuenta de otra persona. CakePHP le permite incorporar babosas o UUID con bastante facilidad para evitar que esto suceda.

En segundo lugar, debe preocuparse por los ataques relacionados con el código y los permisos en sí. Por ejemplo:

  • Nunca utilice eval() o system() en su código de datos que pueden provenir del usuario final. Ha habido aplicaciones en el pasado escritas en Perl que han sido secuestradas debido a este problema.
  • La estructura y los permisos de la carpeta son importantes en lo que respecta a la seguridad. Los usuarios nunca deberían tener acceso para ingresar a un directorio de escritura. Con CakePHP, la estructura de la carpeta está diseñada para que pueda apuntar a apache directamente a la aplicación/webroot. Esto significa que el directorio tmp está fuera de la ruta apache, lo que hace que el sistema sea un poco más seguro.

En tercer lugar, debe preocuparse por la protección de sus páginas de administración y quién tiene permisos para acceder a qué.

  • CakePHP tiene un Auth y un componente Acl que le permite elegir qué usuarios acceden a qué páginas. Esto hace uso de Cake Sessions personalizadas que se pueden almacenar en una base de datos, mediante PHP o escritas en el sistema de archivos.

Le sugiero que lea algunos de los componentes importantes y asegúrese de configurarlos correctamente, para asegurarse de que haya creado una aplicación sin fallas de seguridad. Eche un vistazo a algunos de estos elementos mientras investiga más: http://book.cakephp.org/view/170/Core-Components