Mostrando entradas con la etiqueta Adobe Flex. Mostrar todas las entradas
Mostrando entradas con la etiqueta Adobe Flex. Mostrar todas las entradas

XSS – Cross-Site-Scripting IV

Defendiendo Nuestros Usuarios.


Las formas más sencillas de defender nuestros usuarios son mediante las siguientes acciones:

Cookies:

Evitar almacenar datos vitales

XSS – Cross-Site-Scripting III

Defendiendo Nuestra Aplicación.


El primer modo de defensa que veremos, será la defensa de nuestra aplicación, misma que nos enseñara técnicas sencillas para defender nuestro sitio mediante la validación de entradas de datos.


Tenemos que tener claro que lo que debemos hacer es impedir la entrada de scripts en nuestros campos de inserción de datos, validando cada entrada para asegurarnos que no contenga código que pueda afectar nuestra aplicación o a nuestros usuarios.




  1. Limitación de caracteres de entrada.
    Lo primero que debemos hacer

CODEORGAN:¿A qué suena tu sitio web?

Buen día SQLeros!! En esta ocasión estaba langareando en Internet y me encontré con una aplicación muy interesante, la cual esta desarrollada en Flash, y convierte el sitio web que le proporcionamos en una linda canción (Bueno a veces no pero esta chusca la cosa esta :) ).





[caption id="" align="aligncenter" width="300" caption="http://www.codeorgan.com/"]http://www.codeorgan.com/[/caption]

Ahora según nos cuenta el About del sitio, codeorgan, toma le código de la página y analiza el el contenido del cuerpo y lo transforma en musica, removiendo todos los caracteres que no se encuentran en la escala musical, es decir solo deja de la A a la G, despues de esto selecciona el sintetizador para el sonidito, donde se utiliza el número total de caracteres en el sitio.


Actualmente se cuenta con 10 estilos de sintetizadores y estos son utilizados de acuerdo a un porcentaje del contenido del sitio.


Y finalmente para definir el ritmo de la batería se utiliza la razón entre el número de caracteres de la página y el número de caracteres que son notas musicales y de igual forma se cuenta con 10 patrones de batería.


Al final de todo la (pinche) página suena (no!?). Acá el vinculo CODEORGAN.


Un Saludo!!


Ctrl Alt Supr

Enero de 2004. La prensa especializada deja caer entre sus artículos uno dedicado a un ingeniero de IBM que despues de muchos años abandona la empresa. ¿Qué puede tener de especial una persona para merecer ese titular? El protagonista de esta historia se llama David J. Bradley. Tiene 55 años. Formó parte del equipo que creó el primer ordenador personal. Debe sus quince minutos de fama a haber sido quien ideó la combinación de teclas "Control+Alt+Supr" para reiniciar un ordenador.


Por esta razón Bradley entra en el Club de los Históricos de ARRAI.


¿Cuantas veces hemos usado esta combinación de teclas para reiniciar nuestros equipos? El "Control+Alt+Supr" (en inglés "Control+Alt+Delete") es uno de los pequeños iconos culturales del mundillo de la informática.


Corría el año 1981. 12 ingenieros, "los 12 del patíbulo", creaban en los laboratorios de IBM situados en Boca Ratón, Florida, el primer ordenador personal, el IBM-PC. Entre ellos estaba David J. Bradley. Fue el encargado de diseñar la BIOS de aquel primer equipo de uso doméstico. El resto de su trabajo para el "gigante azul" queda empañado por la anécdota: la creación del código de reinicio del PC.



El ingeniero David Bradley


Entró en IBM en 1975, y formó parte a partir de 1980 del equipo que desarrolló el primer ordenador personal. Entre otras cosas, es responsable del código de la ROM BIOS que llevaban los primeros PCs. Despues de 28 años y medio en IBM, Bradley la abandonó en enero de 2004. En la actualidad continúa impartiendo clase en la Universidad Estatal de Carolina del Norte. Para este ingeniero en electricidad e informática, cuantos más estudiantes vayan a carreras de ciencia y tecnología, mayor será la fuerza económica del país (en su caso, de los Estados Unidos).


David J. Bradley



Control Alt Delete


¿Por qué se desarrolló esta función? Bradley explica que a principios de los 80 en IBM se estaban haciendo pruebas de forma intensa con nuevo hardware y nuevo software. Esto provocaba que los ordenadores se quedasen colgados con facilidad. Para volver a arrancar un equipo era necesario apagarlo, esperar unos segundos a que reposara para no provocar daños al hardware, volver a arrancarlo y esperar por las rutinas de autocomprobación que ejecutaba el PC. Se tardaba más de un minuto en volver a tener el equipo operativo.


La idea de Bradley era crear un mecanismo que permitiese el reinicio "en caliente", sin tener que seguir todo ese proceso. El ahorro de tiempo era considerable, y por eso esta funcionalidad, que en un principio estaba destinada únicamente a ser conocida por los desarrolladores de IBM, se difundió paulatinamente entre el público.


¿Porqué esas tres teclas?


¿Por qué estas tres teclas? Se trataba de encontrar una combinación que no se pudiese teclear por accidente. Se eligieron dos teclas de uso poco común (Control y Alt) y la tercera se buscó justo al otro lado del teclado. Al principio Bradley pensó en la tecla "+", pero creyó que DELETE tendría más sentido. Una vez definida la solución, Bradley afirma que programarla no le llevó más de cinco minutos.



La actualidad de "Control Alt Delete"


Ya no es lo que era, ahora es más. Las versiones de Windows 2000 y XP capturan esta combinación y ofrecen un panel de opciones: el administrador de tareas, cerrar sesión o apagar de forma civilizada. En los casos extremos en que esto ya no funciona, no hay más remedio que volver al fatídico botón de reset.


Tambien se incorpora en Windows 2000 para arranque de sesión, con lo que "Control+Alt+Supr", tambien conocido como "La llave de Vulcano", o "El saludo de los tres dedos", ha dejado definitivamente de ser un truco no escrito a ser una combinación de teclas de obligado conocimiento, mucho más usada si cabe.



Hacerlo famoso


Cuando se celebraba el vigésimo aniversario de la creación del Pc, compartían escenario en una mesa redonda Bill Gates y David Bradley, entre otros. Durante una parte del evento, el tema de conversación era el mecanismo de reinicio. En el vídeo cuyo enlace ofrecemos se puede oir a Bradley bromeando con Gates, aunque este último no pone cara de estar divirtiéndose. Bradley dice: "Hacerlo llevó cinco minutos, no sabía que iba a crear un icono cultural. Pero tengo que compartir el mérito, puede que yo lo haya inventado, pero ha sido Bill el que lo ha hecho famoso."


Seguramente, Bradley fue el primer sorprendido por la fama alcanzada por su código. Algo que en principio era simple, que no llevó más de cinco minutos, se acaba convirtiendo en un icono cultural. Quizá esto nos puede enseñar a apreciar los detalles y los trabajos pequeños. Si están bien hechos y son útiles, pueden convertirse en algo con un gran significado.


La idea de Bill Gates es distinta. Adoptó el código de Bradley, le era útil y lo utilizó como un complemento para construir algo mayor. Es tambien una forma de ver como lo que hacemos, si lo compartimos, puede servirle a otra gente. Aunque podemos adivinar que Gates hubiese preferido que el "Ctrl+Alt+Supr" no fuese tan conocido por sus usuarios.


Ahora una rola del reno renardo al respecto.


Ctrl Alt Supr - Reno Renardo

Invocar funciones PHP desde Flex con AMFPHP

Adobe Flex es un framework de desarrollo que nos permite crear rápida y facilmente aplicaciones RIA (Aplicaciones de Internet Enriquecidas), basado en la plataforma Flashcombinando el lenguaje de marcas MXML y ActionScript. También, gracias a su entorno de desarrollo se simplifica el desarrollo de aplicaciones AIR.


En esta oportunidad quiero explicar cómo hacer uso de Flex para invocar funciones hechas enPHP (no entraré en detalles, pues no conozco a fondo ActionScript). Una forma de hacerlo es mediante AMFPHP. Pero ¿qué es AMFPHP? Es un RPC (Llamada a Procedimientos Remotos) que nos permite comunicar datos de aplicaciones-funciones entre el cliente (JavaScript, Flash, Flex, etc) y servidor (PHP, ASP, JSP, etc). En este caso AMFPHP realiza la comunicación de procesos remotos entre Flash (y por extensión aplicaciones RIA en Flex y AIR) y PHP.


Vamos por paso para la implementación de un proyecto en Flex que llame a funciones en PHP.


1. Descargar y extrae la carpeta amfphp que contiene la siguiente estructura (y para no perderse en el tutorial, colocala en la raíz de tu sitio web de tal forma que quede así:http://localhost/amfphp)



+ ampphp
 
+services
 
+core
 
+browser
 
-gateway.php
 
-globals.php
 
-.htaccess
 
-json.php
 
-xmlrpc.php
 
-phpinfo.php

2. Verificar el funcionamiento del amfphp. Para ello abres tu navegador y escribeshttp://localhost/amfphp/browser. Aparecera una ventana de configuración donde se muestra la ubicación del archivo gateway que actuará como puerta de enlace. En esta ventana solo dale clic en Save.


Podrás apreciar un especie de explorador. En la vista árbol a tu izquierda se mostrarán todas las clases en PHP que podemos usar. Para que una clase aparezca allí debes guardarla en el directorio services.


3. Vamos crear una clase en PHP. Vamos a lista una relación de clientes de una base de datos MySQL. La estructura de la tabla es la siguiente (ingresa un par de registros luego):



CREATE TABLE IF NOT EXISTS `cliente` (
 
`id` tinyint(7) NOT NULL auto_increment,
 
`nombres` varchar(50) NOT NULL,
 
`ciudad` varchar(50) NOT NULL,
 
`sexo` char(1) NOT NULL,
 
`telefono` varchar(10) NOT NULL,
 
`fecha_nacimiento` datetime NOT NULL,
  KEY
`id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

En archivo PHP debe tener el mismo nombre que la clase, en este caso se llama sample.php:



<?php
class sample{
   
function getUsers () {
        $mysql
= mysql_connect(localhost, "root", "");

        mysql_select_db
( "empresa" );

                $Query
= "SELECT * from cliente";
                $Result
= mysql_query( $Query );
               
while ($row = mysql_fetch_object($Result)) {
                        $return
[] = $row;
               
}
               
return( $return );
       
}
}
?>

Volvamos a http://localhost/amfphp/browser y podemos apreciar en la lista de servicios, a la mano izquierda, nuestra clase llamada sample. Si la seleccionamos se muestran sus métodos, en este caso getUsers, y pulsamos el botón call se mostrará el resultado en la parte inferior.


amfphp browser


4. Abrimos Flex (en mi caso Flex Builder 3) y creamos un nuevo proyecto Flex de nombresample.


new project


new project


Configuramos la ruta en nuestro servidor local:


new project


new project


El archivo autogenerado sample.mxml lo dejamos allí por un momento. Ahora vamos agregar un archivo de ActionScript a nuestro proyecto, para ello le damos clic derecho en la carpeta srcy seleccionamos New > ActionScript File.


new project


new project


El archivo RemotingConnection.as contiene un clase que llama a una conexión remota especificando la url de ésta.



package {
       
import flash.net.NetConnection;
       
import flash.net.ObjectEncoding;

       
public class RemotingConnection extends NetConnection
       
{
               
public function RemotingConnection( sURL:String )
               
{
                        objectEncoding
= ObjectEncoding.AMF0;
                       
if (sURL) connect( sURL );
               
}

               
public function AppendToGatewayUrl( s : String ) : void
               
{
                       
//
               
}
       
}
}

Ahora el archivo autogenerado sample.mxml, lo reemplazamos por el siguiente contenido:



<?xml version="1.0" encoding="utf-8"?>

       
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns="*" creationComplete="initApplication()">

       
<mx:DataGrid dataProvider="{dataProvider}">
               
<mx:columns>
                               
<mx:DataGridColumn headerText="ID" dataField="id"/>
                               
<mx:DataGridColumn headerText="Nombres" dataField="nombres"/>
                               
<mx:DataGridColumn headerText="Ciudad" dataField="ciudad"/>
                               
<mx:DataGridColumn headerText="Telefono" dataField="telefono"/>
                               
<mx:DataGridColumn headerText="Sexo" dataField="sexo"/>
                               
<mx:DataGridColumn headerText="Fecha Nacimiento" dataField="fecha_nacimiento"/>
                       
</mx:columns>
       
</mx:DataGrid>

       
<mx:Script>
                <![CDATA[
                        [Bindable]
                        public var dataProvider:Array;
                        public var gateway : RemotingConnection;

                        public function initApplication()
                        {
                                gateway = new RemotingConnection( "http://localhost/amfphp/gateway.php" );
                                gateway.call( "sample.getUsers", new Responder(onResult, onFault));
                        }

                        public function onResult( result : Array ) : void
                        {
                                dataProvider = result;
                        }

                        public function onFault( fault : String ) : void
                        {
                                trace( fault );
                        }
                ]]>
       
</mx:Script>

</mx:Application>

Hemos creado un DataGrid para mostrar los datos de la consulta al servidor MySQL. Dentro de las etiquetas <mx:Script/> hacemos uso de ActionScript para llamar a la claseRemotingConnection que creamos anteriormente. La función initApplication() se encarga de conectar con la puerta de enlace: gateway.php, y llama al método getUsers() de la clasesample. La respuesta la recibe la función onResult() que pasa los datos a la variabledataProvider y ésta pasa al DataGrid.


6. Ahora simplemente compilamos el proyecto (Ctrl + F11) y podemos apreciar el resultado en el navegador web.


new project


De esta forma podemos crear aplicaciones web complejas que incluyan inserción y actualización de datos. Pero eso no esto, incluso podemos crear aplicaciones de escritorio gracias a AIR con esta funcionalidad, es decir llamadas a procesos remotos. Les dejo los archivos de este tutorial para que lo prueben en su servidor local.


Lo vi en: Flex and PHP Using AMFPHP