PDF de programación - the original hacker 07 201406

Imágen de pdf the original hacker 07 201406

the original hacker 07 201406gráfica de visualizaciones

Publicado el 11 de Julio del 2017
835 visualizaciones desde el 11 de Julio del 2017
890,3 KB
23 paginas
Creado hace 5a (30/06/2014)
THE ORIGINAL HACKER
SOFTWARE LIBRE, HACKING y PROGRAMA-
CIÓN, EN UN PROYECTO DE

EUGENIA BAHIT



@eugeniabahit

GLAMP HACKER Y
PROGRAMADORA EXTREMA
HACKER ESPECIALIZADA EN PROGRAMACIÓN
EXTREMA E INGENIERÍA INVERSA DE CÓDIGO
SOBRE GNU/LINUX, APACHE, MYSQL,
PYTHON Y PHP. EUGENIABAHIT.COM

DOCENTE E INSTRUCTORA DE TECNOLOGÍAS
GLAMP CURSOS.EUGENIABAHIT.COM
CURSOSDEPROGRAMACIONADISTANCIA.COM

MIEMBRO DE LA FREE SOFTWARE
FOUNDATION FSF.ORG Y THE LINUX
FOUNDATION LINUXFOUNDATION.ORG.

CREADORA DE PYTHON-PRINTR, EUROPIO
ENGINE, JACKTHESTRIPPER. VIM CONTRI-
BUTOR. FUNDADORA DE HACKERS N'
DEVELOPERS MAGAZINE Y RESPONSABLE
EDITORIAL HASTA OCTUBRE '13.

武士道

Buenos Aires, 30 de Junio
de 2014

ÍNDICE DE LA
EDICIÓN NRO7

EUROPIO ENGINE LAB: URL CUSTOMIZABLES Y SLUGS
EN EUROPIO ENGINE............................3

INGENIERÍA DE SOFTWARE Y ESTRUCTURAS DE
DIRECTORIOS DEFINITIVAS EN APLICACIONES MVC
MODULARES....................................7

HACK PARA EMULAR LA AUTOCARGA Y DESACTIVACIÓN
DE MÓDULOS DE UN SISTEMA COMO POLÍTICA DE
EMERGENCIA FRENTE A FALLOS INESPERADOS.......14

ESE CAPTCHA NO VERIFICA A LOS HUMANOS, SINO
QUE COMPRUEBA SU MIOPÍA.....................16

The Original Hacker – www.originalhacker.org

®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA

3

EUROPIO ENGINE LAB:
URL CUSTOMIZABLES Y
SLUGS EN EUROPIO ENGINE

H

ace algunas revisiones atrás, incorporé en Europio Engine
un sistema de URL personalizadas que utilizan expresiones
regulares para la definición de slugs.

Esta idea -que como tantas otras surgió del ingenio de Jimmy Daniel
Barranco- se convirtió en los últimos 2 meses en una de las
características más populares del motor y por tanto, en una de las
más consultadas.

Es por ello que en esta entrega explicaré como implementar dicha
característica en las aplicaciones y como generar slugs SEO-
compatibles, aprovechando la ocasión para hablarles sobre algunos
hacks increíbles.

LLEVABA TIEMPO JIMMY
COMENTÁNDOME LA NECESIDAD
DE CREAR URLS
PERSONALIZADAS EN EUROPIO
ENGINE YA QUE ES UNO DE
LOS REQUERIMIENTOS MÁS
USADOS EN EL FRONT-END
DE LA MAYOR PARTE DE LAS
APLICACIONES WEB. UNOS
MESES ATRÁS DECIDÍ
IMPLEMENTAR UN SISTEMA
PARA EL CUAL ME INSPIRÉ
EN EL DE DJANGO Y PARA
MI SORPRESA, AL DÍA DE
HOY SE CONVIRTIÓ EN LA
CARACTERÍSTICA MÁS
POPULAR DEL ENGINE.

COMENZAR A UTILIZAR URL PERSONALIZADAS
Lo primero que debemos hacer es crear un archivo llamado urls.php en la raíz de la aplicación. Es
importante saber que este archivo no es sustituido ni reemplazado de ninguna forma cuando el core de
Europio Engine es actualizado mediante el updater1.

Trasfondo
El contenido de este archivo es ejecutado como código en estado puro por el enrutador de
ApplicationHandler mediante eval. El enrutador utiliza el constructor eval2 del lenguaje
-destinado originalmente a evaluar código- como hack para evitar el uso de global y la
creación de variables globales.

1
2

http://www.cursosdeprogramacionadistancia.com/pastebin/codigofuente/ver/16
http://www.php.net/manual/es/function.eval.php

The Original Hacker – www.originalhacker.org

®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA

4

El archivo urls.php no debe contar con etiquetas de apertura ni cierre. Solo debe contener una variable
llamada $urls cuyo valor se un array:

$urls = array();

FUNCIONAMIENTO DEL ARRAY $URLS
Se trata de un array asociativo cuyas claves serán expresiones regulares que definan los slugs personalizados
y sus valores asociados, la verdadera URL cuyo recurso se desee mostrar al usuario.

Un ejemplo sencillo, plantea la como slug la expresión regular del literal de /productos para mostrar al usuario
el recurso listar del modelo Producto perteneciente al módulo de ventas:

$urls = array(
"/^\/productos$/" => "/ventas/producto/listar"
);

Según el array anterior, los usuarios que accediesen a examples.org/productos llegarían al mismo
recurso que accediendo a través de example.org/ventas/producto/listar

Ejemplos un poco más complejos, podrían requerir argumentos fijos:

$urls = array(
"/^\/ofertas/" => "/ventas/producto/ver/ofertas"
);

O variables:

$urls = array(
"/^\/producto\/[0-9|a-z|A-Z|\-]{1,}/" => "/ventas/producto/ver"
);

En cualquier caso, todo el slug será pasado como parámetro al recurso dentro de un array. Los elementos de
dicho array serán cada una de las partes obtenidas tras el análisis sintáctico (parsing) de la URL, el cuál
tomará la barra diagonal (slash) como parámetro divisor de la URI.

De esta forma, si el slug resultante se viese como este:

The Original Hacker – www.originalhacker.org

®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA

5

example.org/user/juan2013

Produciría el siguiente array:

array('user', 'juan2013')

Entonces, si hubiese estado definido como:

$urls = array(
"/^\/user\/[0-9|a-z|A-Z]{1,}/" => "/usuarios/user/ver"
);

El Application Handler llamaría al recurso ver del modelo user perteneciente al módulo de usuarios, siendo
dicha llamada equivalente a:

$slug_data = array('user', 'juan2013');
$controlador = new UserController();
$controlador->ver($slug_data);

¿CUANDO SE ACTIVA?
El enrutador del Application Handler, siempre intentará, en primera instancia, invocar a un módulo-modelo-
recurso. Solo cuando la URI esté mal formada o sea inexistente, se fijará si existe un archivo llamado urls.php
en la raíz de la aplicación y comprobará si la URI recibida coincide con alguna de las claves del array.

enrutador

considera que una URI está bien formada si respeta el formato
El
/módulo/modelo/recurso[|argumento]. Toda URI que no respete dicho formato, será considera URI mal
formada.

SLUG HACK

MOSTRAR UNA VISTA POR DEFECTO SIN REDIRECCIONAMIENTO
En el array $urls se debe crear la siguiente expresión regular:

$urls = array(
"/^\/$/" => "/ruta/a/vista/por/defecto"
);

The Original Hacker – www.originalhacker.org

®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA

6

Luego, en la sección APPLICATION del archivo config.ini de la aplicación, se debe establecer el valor de
la directiva DEFAULT_VIEW en /

DEFAULT_VIEW = /

RECUPERAR UN OBJETO A PARTIR DE UN SLUG SIN CONTAR CON SU ID
Puede ser el caso de una URI formada solo por la denominación de un determinado objeto, como en el ejemplo
del usuario /user/juan2013. En un caso como este, en el controlador puede emplearse a DataHandler 3 para
recuperar al objeto sin contar con su ID, utilizando el método filter.

function ver($data=array()) {
$opt = array('flags'=>FILTER_FLAG_STRIP_HIGH);

$user = isset($data[1]) ? filter_var($data[1], FILTER_SANITIZE_SPECIAL_CHARS, $opt) : '';
$obj_user = DattaHandler('user', DH_FORMAT_OBJECT)->filter("name=$user");
#...

}

Hagamos la diferencia 

Estudiantes de sistemas de todo el mundo de habla hispana, cuentan
con miles de recursos libres para enriquecerse profesionalmente
que solo son posibles por el esfuerzo y dedicación de quiénes
ponemos nuestro conocimiento al servicio de la comunidad.
Por mínima que sea tu donación, me ayudas a continuar aportando conocimiento a todos los

estudiantes y profesionales de sistema que lo necesitan para el futuro de sus carreras.

Entre todos, PODEMOS hacer una gran diferencia








The Original Hacker – La revista (edición mensual en PDF)
The Original Hacker Library – Biblioteca de recursos para estudiantes de informática
Europio Engine – Motor de software para aplicaciones MVC modulares en PHP
JackTheStripper – Deployer para servidores con énfasis en seguridad

3

Ver artículo sobre «manipulación de datos con DataHandler» en The Original Hacker Nº6 descargando el paper desde
este enlace: http://library.originalhacker.org/search/datahandler

The Original Hacker – www.originalhacker.org

®2013, 2014 Eugenia Bahit – www.eugeniabahit.com – Bajo Licencia Creative Commons BY-NC-SA

7

INGENIERÍA DE SOFTWARE Y
ESTRUCTURAS DE
DIRECTORIOS DEFINITIVAS
EN APLICACIONES MVC
MODULARES

LO PADECÍ DURANTE AÑOS.
DURANTE AÑOS ME DEDIQUÉ
A INVESTIGAR Y TRATAR DE
DESCUBRIR UN ESQUELETO
QUE RESULTASE TAN ÓPTIMO
COMO IRREFUTABLE. LA
CREACIÓN DE EUROPIO
ENGINE ME AYUDÓ MUCHO EN
EL HALLAZGO DE UNA
RESPUESTA Y AHORA, TRAS
DOS AÑOS DE
CONSTANTES PRUEBAS
SOBRE ALGO MÁS DE 70
APLICACIONES CREADAS,
PUEDO CONTARLES MI
PROPUESTA SIN MIEDO A
COMETER ERRORES.

E

nredos, desprolijidades, decisiones «provisorias para
siempre», son solo algunas de las tantas causas que
generan el malestar y la desesperación que todo
programador padece de forma permanente en su carrera como
desarrollador de Software y a pesar de haber leído los mejores
libros, estudiado con los mejores docentes, seguido los mejores
consejos y haberse mantenido actualizado sobre los últimos
avances en tecnología, la desgastante sensación nunca
desaparece.

Parece una introducción irónica, casi sarcástica, pero no lo es. Es la
pura realidad que vivo día a día cuando reviso algún código en
GitHub, intento hacer algo de ingeniería inversa sobre alguna app o
simplemente escucho padecer a mis alumnos. Pues la
organización del código fuente, la estructura interna de una
aplicación y su esqueleto, representan el 80% del éxito de
una aplicación. Y si alguna de estas falla, el fracaso del Software
es un hecho inminente.

LA IMPORTANCIA CONTAR CON UN SISTEMA BIEN
ORGANIZADO
Las bases de una aplicación modular, no son solo un formalismo
técnico de moda. Por consiguiente, sus principios de portabilidad,
encapsulación e independencia, deben ser respetados sin
margen de error.

Un sistema modular es aquel que se compone de un número desconocido de aplicaciones denominadas
«módulos» y qu
  • Links de descarga
http://lwp-l.com/pdf5195

Comentarios de: the original hacker 07 201406 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad