PHP && Web 2 - cisluss.files.wordpress.com && Web 2.0 Ing. Mario Uriarte Amaya [email protected]...

37
 PHP && Web 2.0 Ing. Mario Uriarte Amaya http://necudeco.com [email protected]

Transcript of PHP && Web 2 - cisluss.files.wordpress.com && Web 2.0 Ing. Mario Uriarte Amaya [email protected]...

   

PHP && Web 2.0

Ing. Mario Uriarte Amayahttp://necudeco.com

[email protected]

   

PHP en sus inicios

En 1994, Rasmus Lerdorf creo un script en Perl para obtener un contador de visitas de su pagina web.

Luego en 1997, Zeev Suraski y Andi Gutmans reescribieron el codigo dando origen a PHP3

En 1999, fundaron la empresa Zend y liberaron el motor de PHP con el mismo nombre.

En Mayo del 2000 se libero la version 4 de PHP En julio del 2004 fue liberada la version de PHP5 Actualmente se espera la version 6 de PHP

   

El Creador

Nace el 22 de Nov de 1968, en Groenlandia

Creador de las 2 primeras versiones de PHP.

Actualmente participa en el desarrollo de PHP

   

El primero codigo de PHP

  <!­­getenv HTTP_USER_AGENT­­>

  <!­­ifsubstr $exec_result Mozilla­­>

  Hey, you are using Netscape!<p>

  <!­­endif­­>

  <!­­sql database select * from table where user='$username'­­>

  <!­­ifless $numentries 1­­>

  Sorry, that record does not exist<p>

  <!­­endif exit­­>

  Welcome <!­­$user­­>!<p>

  You have <!­­$index:0­­> credits left in your account.<p>

  <!­­include /text/footer.html­­>

   

Caracteristicas de PHP

Soporte a la Programacion Orientada a Objetos Soporte para XML Soporte nativo para Sqlite Soporte Integrado de SOAP Manejo de Excepciones Y Proximamente

Soporte de Namespaces Soporte de Unicode

   

   

Seguridad

Las aplicaciones Web trabajan en un ambiente heterogeneo y desprovisto de todo tipo de control.

Las validaciones y medidas de seguridad del lado del cliente son totalmente vulnerables, y solo deben ser consideradas como ayudas al usuario ... mas no como medida de seguridad.

   

Amenazas

Zone­h contabiliza 2.500 intrusiones Web con éxito cada día en 2004.

Se atacan todas las tecnologías Los ataques se han escalado desde el sistema operativo a 

la aplicación. Ataques no masivos. Motivos:

Económicos Venganza Reto Just For Fun

   

Seguridad: SQL Injection

Inyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en cualquier lenguaje de programación o de script que esté incrustado dentro de otro.

   

Explotación del Ataque

Aplicaciones con mala comprobación de datos de entrada. Datos de usuario.

Formularios Text Password Textarea List multilist

Datos de llamadas a procedimientos. Links Funciones Scripts Actions

Datos de usuario utilizados en consultas a base de datos.

Mala construcción de consultas a bases de datos.

   

Riesgos

Permiten al atacante: Saltar restricciones de acceso. Elevación de privilegios. Extracción de información de la Base de Datos Parada de SGBDR. Ejecución de comandos en contexto usuario bd dentro 

del servidor.

   

Tipos de Ataques Ejemplo 1:

Autenticación de usuario contra base de datos.

Select idusuario from tabla_usuariosWhere nombre_usuario=‘$usuario’And clave=‘$clave’;

Usuario

Clave ****************

   

Tipos de Ataques

Ejemplo 1 (cont)

Select idusuario from tabla_usuariosWhere nombre_usuario=‘Administrador’And clave=‘’ or ‘1’=‘1’;

Usuario

Clave

Administrador

‘ or ‘1’=‘1

   

Contramedidas

No confianza en medias de protección en cliente.

Comprobación de datos de entrada.

Construcción segura de sentencias SQL.

Fortificación de Servidor Web. Códigos de error. Restricción de verbos, longitudes, etc.. Filtrado de contenido HTTP en Firewall.

Fortificación de SGBD. Restricción de privilegios de motor/usuario de acceso desde web. Aislamiento de bases de datos.

   

Seguridad: Cross-Site Scripting (XSS)

XSS es un ataque basado en explotar vulnerabilidades del sistema de validación de HTML incrustado, originalmente abarcaba cualquier ataque que permitiera ejecutar código de "scripting", como VBScript o javascript, en el contexto de otro dominio.

   

Explotación del Ataque

Datos almacenados en servidor desde cliente.

Datos van a ser visualizados por otros cliente/usuario.

Datos no filtrados. No comprobación de que sean dañinos al cliente que visualiza.

   

Riesgos

Ejecución de código en contexto de usuario que visualiza datos.

Navegación dirigida Phising Spyware Robo de credenciales Ejecución de acciones automáticas Defacement

   

Tipos de Ataques

Mensajes en Foros. Firma de libro de visitas. Contactos a través de web. Correo Web.

En todos ellos se envían códigos Script dañinos.

   

Seguridad: Robo de Sesiones (XSS)

Mediante esta técnica se puede robar sesiones de una manera bastante sencilla

Bastaría con realizar un script que llamase a una página alojada en nuestro servidor pasándole la cookie

Este Script se colaría en el servidor de la victima aprovechando un punto vulnerable a XSS

Cuando un usuario este logueado en el servidor y ejecute el script se enviara a nuestro servidor el contenido de la cookie

   

Robo de Sesiones (XSS)

Una vez que la página obtiene la cookie (almacenandola por ejemplo en un fichero) mediante programas como Odysseus se puede hacer una llamada al servidor pasándole la cookie original

Por supuesto esta cookie es válida para robar la sesión solo mientras el usuario no cierre la sesión

   

Contramedidas

Fortificación de aplicación Comprobación fiable de datos

Fortificación de Clientes Ejecución de clientes en entorno menos privilegiado. Fortificación de navegador cliente.

MBSA. Políticas.

   

¿ Como construir aplicaciones seguras ?

La informacion vital ( contraseñas, cuentas bancarias, etc ) deberia ser enviada cifrada ... preferiblemente usando https

Las contraseñas deben ser almacenadas cifradas en la base de datos

Se debe validar las entradas antes de construir las sentencias SQL.

Si se usa Ajax, se debe validar la informacion reciba antes de ser mostrada.

   

Usabilidad y Accesibilidad

La usabilidad se refiere a la capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en condiciones específicas de uso.

La accesibilidad es el grado con el que algo puede ser usado, visitado o accedido por todas las personas, independientemente de sus capacidades técnicas o físicas.

   

Evaluando la Usabilidad

Mapas de Calor Evaluación de Formularios Evaluación de Diseños Seguimiento de Navegación

   

Accesibilidad

La W3C (World Wide Web Consortium), en especial su grupo de trabajo Web Accessibility Initiative (WAI) es el encargado de promover la accesibilidad.

   

Beneficios de la Accesibilidad

Aumenta el número de potenciales visitantes de la página web.

Disminuye los costes de desarrollo y mantenimiento.

Reduce el tiempo de carga de las páginas web y la carga del servidor web.

Se supone de caracter obligatorio en organismos estatables.

   

Pautas de Accesibilidad

Proporcione alternativas equivalentes para el contenido visual y auditivo

No se base sólo en el color. Utilice marcadores y hojas de estilo y hágalo 

apropiadamente. Identifique el idioma usado. Cree tablas que se transformen correctamente. Asegúrese de que las páginas que incorporan nuevas 

tecnologías se transformen correctamente.

   

Pautas de Accesibilidad

Asegure al usuario el control sobre los cambios de los contenidos tempo­dependientes.

Asegure la accesibilidad directa de las interfaces de usuario incrustadas.

Diseñe para la independencia del dispositivo Utilice soluciones provisionales. Utilice las tecnologías y pautas W3C. Proporcione información de contexto y orientación.

   

Pautas de Accesibilidad

Proporcione mecanismos claros de navegación. Asegúrese de que los documentos sean claros y 

simples.

Para validar cada una de estas pautas, la W3C de definido puntos de verificación dentro de las mismas. Estos puntos de verificación tienen diferentes prioridades.

   

Estandares Web La W3C, World Wide Wide Consortium, es un 

organismo neutro que desarrolla estandares para la web.

Conjunto de recomendaciones dadas por el World Wide Web Consortium (W3C) y otras organizaciones internacionales acerca de cómo crear e interpretar documentos basados en el Web.

El objetivo es crear un Web que trabaje mejor para todos, con sitios accesibles a más personas y que funcionen en cualquier dispositivo de acceso a Internet.

   

Estandares Web

¿ Te imaginas hablar en un idioma y que tus oyentes hablen otro ? Los estandares Web defininen un idioma universal.

   

Estandares Web

XHTML, XML, XSL CSS Urls Semanticos SVG, PNG Accesibilidad Javascript No Instrusivo

   

Web no tan estandar ( XUL )

XUL (XML­based User­interface Language) es la aplicación de XML a la descripción de la interfaz de usuario en el navegador Mozilla.

   

XUL● XUL es un lenguaje basado en XML. Es usado por 

Mozilla para crear su GUI.● Tiene su origen con el navegador Mozilla, en el año 

2001● XUL, aunque no es un lenguaje estandar, es 

verdaderamente multiplataforma.● Con XUL puedo crear:

● Extensiones de Firefox● Aplicaciones Independientes● Aplicaciones XUL Remotas

   

Demostración

   

Requerimientos

Apache, php5, mysql, adodb, smarty, phpORM. sudo aptitude install apache2 php5 mysql­server smarty 

libphp­adodb

   

Descripción de la aplicación

Sistema de Gestion de Contenidos ( Blog ). Soporte de Posts y Comentarios. Area Administrativa para la Gestion de Posts. Area Administrativa para la Gestion de 

Comentarios.