Está en la página 1de 27

THE ORIGINAL HACKER

SOFTWARE LIBRE, HACKING y PROGRAMA-


CIN, EN UN PROYECTO DE
EUGENIA BAHIT

@eugen!"!#$
GLAMP HACKER Y
PROGRAMADORA E%TREMA
HACKER ESPECIALI&ADA EN PROGRAMACIN
E%TREMA E INGENIER'A IN(ERSA DE CDIGO
SOBRE GNU)LINU%, APACHE, MYS*L,
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 LINU%
FOUNDATION LINU%FOUNDATION+ORG+
CREADORA DE PYTHON-PRINTR, EUROPIO
ENGINE, ,ACKTHESTRIPPER+ (IM CONTRI-
BUTOR+ FUNDADORA DE HACKERS N-
DE(ELOPERS MAGA&INE Y RESPONSABLE
EDITORIAL HASTA OCTUBRE -./+
Buen01 A2e1
Se3$e4"2e 56.7
'NDICE DE LA
EDICIN NRO8
GU'A PARA SER UN BUEN ESTUDIANTE DE SISTEMAS9
LAS .5 REGLAS DEL APRENDI& DE HACKER+++++++++/
SOBRE EL REPORTE DEL BUG :;<==/ EN APACHE
5+7 Y OTROS CONFLICTOS SOBRE UBUNTU .7+67+++8
NO(EDADES SOBRE ,ACKTHESTRIPPER Y EUROPIOCODE
++++++++++++++++++++++++++++++++++++++++++++./
TUI9 TE%T USER INTERFACES EN GNU)BASH Y
PYTHON++++++++++++++++++++++++++++++++++++++.7
PYTHON WEB SIN FRAMEWORKS9 SOBRE LAS SESIONES
Y EL ACCESO RESTRINGIDO+++++++++++++++++++++55
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
3
GU'A PARA SER UN BUEN
ESTUDIANTE DE SISTEMAS9
LAS .5 REGLAS DEL
APRENDI& DE HACKER
Eugenia Bahit agradece a Hugo (@huguidugui) por la revisin ortogrfica de este artculo
SER UN BUEN ESTUDIANTE
NO IMPLICA SER (ISTO
COMO UN BUEN ESTUDIANTE+
SER UN BUEN ESTUDIANTE,
SOLO RE*UIERE SABER
ADMINISTRAR LAS ENERG'AS
IN(ERTIDAS EN APRENDER+
uchas personas podran creer que un buen estudiante
es aquel que cae bien al docente, pero nada ms lejos
de la realidad.
!uando hablamos de buen estudiante no nos re"erimos a aquel
que seg#n terceras personas resultara ser un buen alumno, sino a
aque que sa!e "#mo me$or invertir sus energ%as en e
tiem&o 'e que 'is&one &ara sa"ar e m()imo &rove"ho 'e o
que 'esea a&ren'er*.
$qu podrn encontrar una serie de normas o &re"e&tos que os
a+u'ar(n a ser me$ores estu'iantes.
REGLA N.9 NO ESTUDIES ESTANDO CANSADO, TRAUMATI&ADO O MAL HUMORADO
%eurol&gicamente, el cerebro absorbe ' asimila mejor la in"ormaci&n que le llega estando en buen estado
anmico. (oda la in"ormaci&n que ingrese al cerebro bajo una situaci&n poco agradable )'a sea cansancio,
estr*s, mal humor u otra emoci&n negati+a,, por asociaci&n indirecta, ser enla-ada a algo negati+o. .e
esta "orma, si acabas de recibir un telegrama de despido de tu trabajo ' *ste, te generase /ms all de la
sorpresa ' lo inesperado/ un gran malestar, si inmediatamente te e0plicasen qu* es un algoritmo, tu cerebro,
indirectamente, asociara algoritmo a sorpresa desagradable.
REGLA N59 ESTUDIA CON TU CEREBRO PERO MENTAL'&ATE CON TU ESP'RITU
1sta regla +iene de la mano de la anterior. %o basta con solo no estar de mal humor a la hora de estudiar. 1s
sumamente importante que sea capa- de generarte a ti mismo, buenas sensaciones antes de entrar a la
clase. $l momento de comprender ' asimilar lo nue+o, utili-ars la ra-&n, pero te mentali-ars pre+iamente
para llenarte de un espritu positi+o antes de comen-ar a emplear la ra-&n. 2or los mismos moti+os que los
mencionados en la regla %34, esto a'udar a asimilar mejor la nue+a in"ormaci&n.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
4
REGLA N/9 NO FALTES A TUS CLASES Y S> PUNTUAL
La hora de ir a clases debe ser sagrada, irrenunciable e impostergable. 2ues cada clase es tu #nica
oportunidad de conectar con tu maestro ' aprender de *l o ella. 5i supieses que tu siguiente clase ser tu
#ltima clase 6llegaras tarde o cancelaras la clase7 5eguramente no. 8 eso es porque realmente +aloras el
hecho de poder aprender de tus maestros.
REGLA N79 EN LA CLASE, CONC>NTRATE SOLO EN LA CLASE
1sto signi"ica que debes tener tus 9 sentidos puestos en la clase. 1n el aula, apaga el m&+il ' si*ntate en un
lugar donde nada pueda distraerte. %i hablar de :no utili-ar reproductores de m#sica; 5i grabars la clase,
aseg#rate de hacerlo con un dispositi+o que no pueda distraerte. 5i "unciona a pilas<batera, aseg#rate que
est*n cargadas. 5i requiere de cinta o unidad de almacenamiento aseg#rate de que tenga espacio su"iciente,
etc.
5i la clase es online, busca un lugar tranquilo ' silencioso. %o escuches radio, (=, ni m#sica mientras cursas.
5i cursas en casa estando en "amilia, a+isa a tu c&n'uge o padres )seg#n el caso, que necesitars estar un
tiempo a solas para tomar una clase online, de manera que nadie te distraiga con risas, an*cdotas, etc. 5i
cursas en tu lugar de trabajo, aseg#rate de que se te asigne un lugar aislado para tomar tu clase ' que nadie
te moleste en ese momento. 5i alguna de las anteriores circunstancias no te es posible cumplir, es pre"erible
optar por cursos presenciales 'a que hacerlo a distancia no ser para nada producti+o.
REGLA N;9 SIEMPRE PREFIERE E,ERCITAR LO APRENDIDO *UE LEER O TEORI&AR
$ no ser que tu maestro te indique que debes leer algo en particular, tu primera reacci&n, siempre debe ser
ejercitar aquello de lo que ha'as hablado en clase. La psicopedagoga di"erencia entre el >saber> ' el >saber
hacer> considerando que solo cuando se llega a este #ltimo se ha aprendido realmente
4
. %adie aprende a
caminar teori-ando sobre los pasos que alg#n da deber dar. 5implemente, una +e- comprendido qu* es lo
que se debe hacer, se lo intenta hacer repetidamente hasta que logre hacerse de "orma natural.
REGLA N<9 MANT>N FLUIDE& Y CONTINUIDAD
.e "orma tal, que entre una clase ' otra no quede tiempo muerto. 5i has logrado estudiar todo lo que debas
estudiar en menos tiempo del esperado, debers administrar mejor tu tiempo. 5i te ha sobrado el tiempo,
repite ' re+isa tus ejercicios o relee lo que el docente te indic&, pero utili-a el tiempo sobrante en asimilar
mejor lo que ha'as aprendido. 5i ests estudiando con a'uda de terceras personas, me-clar mecanismos
autodidactas puede ser contraproducente. 1ntonces, cuando te sobre tiempo, no intentes incorporar nue+os
conocimientos 'a que corrers el riesgo de mal interpretar lo que 'a ha'as aprendido.
4 5eg#n ta0onoma cogniti+a de Bloom.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
5
REGLA N?9 CONF'A EN TUS MAESTROS
La con"ian-a en tus maestros es la cla+e "undamental para aprender lo que tus maestros te ense?en. 5i no
tienes con"ian-a pro"esional en tus maestros, estars in+irtiendo tus energas en cuestionar lo que tus
maestros te ense?en ' terminars no aprendiendo nada. 5i no con"as en tu maestro, busca uno en el que
con"es. 5i no con"as en la instituci&n en la que estudias, no intentes buscar un maestro en quien con"iar
dentro de esa instituci&n. B#scalo "uera.
2ero ten en cuenta que si con"as en tu maestro, con"iars en lo que te ense?e. 8 si con"as en lo que te
ense?a, solo debers ejercitarlo para haberlo aprendido.
REGLA N=9 PREGUNTA TODO LO *UE NO ENTIENDAS SIN INTERRUMPIR A TU MAESTRO
!uando estudies a solas, anota todas las dudas que tengas para luego consultarlas a tu maestro. !uando
est*s en la clase ' tu maestro se encuentre e0plicando un tema, apunta todo lo que no entiendas ' cuando tu
maestro pregunte a la clase si se ha entendido lo que e0plic&, pide permiso para preguntar lo que ha'as
apuntado ' preg#ntalo cuando tu maestro te autorice a hacerlo. %unca interrumpas a tu maestro mientras
e0plica un tema. @acerlo podra distraer tu atenci&n, la su'a o la de tus compa?eros ' lograr perder el hilo
conductor.
REGLA N89 NO LEAS EL MATERIAL T>CNICO COMO UN CUENTO O UNA NO(ELA
1l material t*cnico no posee un principio un nudo ' un desenlace. 2or eso, no debe ser ledo como una obra
literaria ms. !uando te en"rentes a material t*cnico, lo primero que debes leer es el ndice de contenidos e ir
hacia aquello que te interese incorporar )a no ser que tu maestro 'a te ha'a dado las indicaciones del caso,.
Lo segundo que debes hacer, si encuentras c&digo "uente, tratar de e0plicrtelo a ti mismo antes de leer el
te0to. Lo tercero, es leer el te0to que rodea al c&digo "uente. $ continuaci&n, copiars ' ejecutars el c&digo
"uente del libro tal ' como aparece. Luego, tratars de modi"icarlo ' "inalmente, si aplica, tratars de
implementarlo en alg#n conte0to. 5olo despu*s de todo esto, adelantars la lectura, incluso aunque ha'as
estado A horas en la misma carilla.
REGLA N.69 CUANDO TU MAESTRO TE CORRI,A, APRENDE, NO TE ,USTIFI*UES
2or lo general, conocer los moti+os que lle+aron a cometer un error no requiere de e0plicaci&n. Bn buen
maestro es capa- de conocer los porqu* del error. 5i in+iertes tus energas en e0plicar a tu maestro por qu*
te has equi+ocado, estars desperdiciando la oportunidad de aprender. 5i cuando tu maestro te corrige, solo
te concentras en comprender e0actamente qu* es lo que tu maestro te est diciendo, apro+echars mejor el
tiempo 'a que podrs emplear el tiempo disponible en preguntar lo que a#n no ha'as entendidoC en
ejercitarlo "rente a tu maestroC o en rati"icar con tu maestro que lo has entendido realmente. 5i en cambio te
preocupas por e0cusarte del error cometido, solo habrs in+ertido el tiempo en eso ' no habrs aprendido
nada.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
6
REGLA N..9 NO PRETENDAS SABER TODO EN UNA SOLA CLASE
2ara aprender de +erdad debes ser paciente. 5i en una sola clase intentas e+acuar todas las dudas que te
ha'an surgido a lo largo de tu carrera, no hars ms que saturarte de in"ormaci&n ' por consiguiente,
conocers las cosas super"icialmente sin llegar a saber nada. Dntenta no abarcar ms de un tema por clase
para poder alcan-ar un mejor ni+el de e0periencia en el mismo.
REGLA N.59 NUNCA DES POR SENTADO *UE HAS ENTENDIDO ANTES DE *UE FINALICE LA
E%PLICACIN
!uando preguntas algo a tu maestro ' *ste comien-a a e0plicarte el tema, es probable que con las primeras
palabras que escuches creas haber comprendido todo por completo. Lo que en realidad sucede es que un
buen maestro comen-ar a darte la e0plicaci&n citando aquello con lo que sabe 'a tienes un dominio. 2or eso
crears haberlo entendido todo. 5i en ese momento te cierras a continuar escuchando o peor a#n,
interrumpes a tu maestro ' le impides continuar la e0plicaci&n, ms all de ser +isto como un irrespetuoso
estars actuando como necio ' t# mismo te cerrars la puerta a aprender aquello que te generaba dudas. Bn
buen maestro no es escueto en sus e0plicaciones pero tampoco es hablador. .e un buen maestro puedes
aprender hasta de su #ltima palabra, pero solo si eres un buen estudiante.
ANE%O I9 CONSIDERACIONES GENERALES *UE ME,ORAN LA
E%PERIENCIA COMO ESTUDIANTE
CE@IRSE A LAS PAUTAS DICTADAS POR EL DOCENTE
Cuando era pequea, recuerdo haber sido regaada por mi maestra de segundo grado tras haber
entregado tarea de ms Cuando se lo coment! a mi mam, ella, mostrndose o"endida di#o$ pero
est loca esa mujer? cmo va a retar a una criatura por tener iniciativa? Tendra que
haberte felicitado %enta por mi maestra un gran respeto & un enorme cario as que me resultaba
imposible creer que ella se pudiese equi'ocar (ero por mi mam senta mucho ms respeto, un
incomparable amor & algo que no senta por mi maestra$ admiraci)n *s que tampoco era posible que se
equi'ocara Entonces, no quedaba ms remedio que tratar de compatibili+ar ambas opiniones, la de mi
mam con la de la maestra , a pesar de mi escasa e-periencia, lo intent!
.o cierto era que siempre senta que la tarea me quedaba corta, la "inali+aba mu& rpido & me aburra
mucho el resto del tiempo *s que pens! que si mi mam deca que estaba bien & la maestra, que estaba
mal, compatibiliar ambas sera como meclar colores! hacer un bello rosa! meclando un
hermoso rojo con blanco"
*s que la siguiente 'e+, al terminar la tarea que mi maestra me haba encomendado, me le'ant! de mi
pupitre & le di#e$ %eo/, &a termin! pero me aburro mucho si no hago nada 0me puede dar ms tarea,
por "a'or1 , as "ue, como *na 2ara, mi maestra de primero & segundo grado, me nombr) su
*&udante o"icial , mi nueva tarea fue mucho ms divertida que la que #o pretenda hacer"
3esde ese momento & hasta el 4ltimo da de clases, se me haba encomendado colaborar en la
preparaci)n de e#ercicios para mis compaeros & a&udar a aquellos a quienes se les complicara
resol'erlos, cada 'e+ que me sobrara tiempo libre
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
7
La historia anterior, sin dudas, marc& mi +ida en
muchos aspectos ' el ms rele+ante a ni+el
pro"esional, ha sido en mi aspecto como docente /'
tambi*n como alumna/.
Erecuentemente, la ma'ora de las personas cree
que hacer ms de lo que se les pide es algo
elogioso. Dncluso muchos consideran que hacer algo
1FGH de lo que se les pide es a#n ms digno de
grandes elogios. 5in embargo, imagina esta
situaci&nI
5as al aeropuerto & pides comprar un pasa#e a
6ait que tan solo cuesta un 78 Cuando la
empleada te entrega el pasa#e, 'es que el
destino es Canc4n & que el 'alor del pasa#e es
de 78999 .e reclamas a la ca#era & ella te
responde$ no se preocupe por el precio, se lo
regalo para que pueda 'ia#ar a un me#or lugar
que 6ait .o que la ca#era no tu'o en cuenta,
es que t4 quieres ir a 6ait porque es el 4nico
lugar del mundo que a4n te queda sin conocer
:o importa para ti qu! lugar es me#or o peor,
pues para ti, lo me#or para cumplir tus ob#eti'os
de conocer el mundo, es ir al 4nico lugar al que
#ams has ido
1s e+idente, que cuando uno pide algo, espera que
la otra persona haga lo que se le pide sin
modi"icaciones, pues todo lo que se pide, se pide por
un moti+o. 1ntonces 6con qu* "in haras lo contrario7
Dncluso aunque imagines que hacer lo que no se te
pide es la mejor alternati+a, el riesgo de estar
equi+ocndote es altsimo.
1n lo personal ' pro"esional, la e0periencia +i+ida en
la ni?e- me lle+& a aprender queI
!omo alumna, sincerarnos con nuestro
maestro ' decirle la "orma en la que nos
sentimos con respecto a sus pautas, es
bene"icioso para nuestro aprendi-aje ' para
la satis"acci&n de nuestro espritu.
!omo docente, es tan importante escuchar a
nuestros alumnos como tener en cuenta sus
emociones ' que se debe ser "le0ible a la
hora de "ijar las pautas de ejercitaci&n.
Bn buen maestro, sabe con e0actitud como guiar a
sus alumnos ' por consiguiente, cuando encomienda
determinada tarea, lo hace con un #nico "inI lograr
un aprendi-aje signi"icati+o en sus alumnos. 2or ese
moti+o, es tan importante seguir sus pautas a la
hora de cumplir con los ejercicios propuestos ' ser
honestos a la hora de e0presar c&mo nos hemos
sentido.
ACEPTA *UE LOS FALLOS EN TUS CDIGOS E INCLUSO LOS DEL SISTEMA, FORMAN PARTE
DE LA TAREA DE PROGRAMAR
%o me canso de e0plicar esto a mis alumnos ' de hacer los m0imos es"uer-os para que lo comprendan.
Cuan'o intentamos e$e"utar nuestra a&i"a"i#n + ,aa, &ue'e 'e!erse /como es sabido/, tanto a un
error nuestro en e "#'igo "omo a una "ara"ter%sti"a 'e sistema que 'e!e ser mo'i,i"a'a-
Erente a un "allo, podemos reaccionar con la misma ignorancia e inmadure- de un usuario, blas"emando por
los cuatro costados lo inser+ible que es el sistema, lo injusta que es la +ida ' la "orma en la que *sta apesta o
podemos a"rontar la situaci&n como lo que es en realidadI un problema inesperado que como pro"esionales
estamos capacitados para resol+er.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
8
1n este sentido, es importante comprender dos cosasI
La primera, es que si nos dedicamos al desarrollo de sistemas, debemos entender que la Dngeniera es
la ciencia encargada de resol+er problemas e0istentes aplicando la rama de estudio que le es
competencia. .e esta "orma, la Dngeniera de 5o"tware es la ciencia encargada de resol+er problemas
e0istentes mediante la aplicaci&n in"ormtica. 2or lo tanto, en Dngeniera, os errores no son m(s
que &ro!emas + os &ro!emas son os que ha"en que a .ngenier%a tenga senti'o. 5in
problemas, no ha' Dngeniera que aplicar.
La segunda, es que los errores /que son en realidad problemas/ deben tomarse como algo no solo
esperable sino adems, deseable. Es ne"esario que os sistemas ,aen, tanto los propios como
aquellos sobre los cules *stos se sustentan, porque de lo contrario, no habra "orma de saber si lo
creado "unciona +erdaderamente o solo lo aparenta. .e hecho, a t/"ni"a 'e &rograma"i#n m(s
"om&e$a + avan0a'a que e)iste, se !asa en ha"er ,aar a a&i"a"i#n*. e re"iero a (...
Si asumes que los errores son deseables y que
resolverlos ES tu tarea propiamente dicha, podrs
disfrutar de cada segundo de estudio y no conocers los
lmites. Podrs atravesar la barrera del conocimiento y
alcanzar metas inimaginables.
2ero, si te en,rentas a os errores "on inma'ure0, no logrars ms que amargura ' te estar(s "erran'o
as &uertas a a&ren'i0a$e.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
9
SOBRE EL REPORTE DEL BUG
:;<==/ EN APACHE 5+7
Y OTROS CONFLICTOS SOBRE
UBUNTU .7+67
Eugenia Bahit agradece a Hugo (@huguidugui) por la revisin ortogrfica de este artculo
RECORRIDO SOBRE LOS
PROBLEMAS MAS FRECUENTES
HALLADOS EN LA (ERSIN
5+7 DE APACHE COMPILADA
POR UBUNTU .7+67 Y SUS
POSIBLES SOLUCIONES+
l pasado jue+es A4 de agosto estaba dictando clases, cuando
casi literalmente e0plot&, producto de un ataque de
ner+ios generado por los innumerables martes 4J que
+engo atra+esando con la +ersi&n 4K.LK L(5 de Bbuntu.
1
$lgunos de mis alumnos decidieron probar esta nue+a +ersi&n
cuando 'o a#n no termin* de in+estigarla, pues los cambios a los
que me he tenido que en"rentar, mu' poco me han agradado ' eso,
ha retrasado mis testeos. 1ntre Bbuntu 4K.LK ' $pache A.K los
cambios implementados, en mi opini&n pro"esional, no hacen uno
bueno ' traen ms problemas que solucionesI
que si el ;eb %ite no se almacena en /var/wwwC
que si el 5irtual6ost no posee la e0tensi&n .confC
' ahora, que si se acti+a MultiViews "alla ModRewrite.
BPOR *U> SI NO (A A )(AR)WWW DA UN FORBIDENC
2orque en el archi+o de con"iguraci&n de $pache que +iene en la compilaci&n para Bbuntu 4K.LK )locali-ado
en /etc/apache2/apache2.conf,, por de"ecto, se encuentran denegadas todas las solicitudesI
<Directory />
...
Require all denied
</Directory>
2ero son concedidas al directorio /var/wwwI
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
10
<Directory /var/www/>
...
Require all granted
</Directory>
1Es esto una "uesti#n 'e seguri'a'2
5 lo es, no me e0plico c&mo es posible que por de"ecto se permita entonces un ista'o 'e 'ire"torio ra%0,
una 'e as &eores &r("ti"as 'e seguri'a'I
<Directory /var/www/>
Options Indexes FollowSy!in"s
...
</Directory>
5i se quiere conser+ar <+ar<www como lugar de almacenaje para los ;eb %ites, bastar con agregar un nue+o
<Directory> ' as solucionar ese maldito <orbiden. 5ino, solo modi"icar la ruta /var/www por la que se
deseeI
<Directory /nuevo/directorio/>
Options #nde$es FollowSy!in"s
%llowOverride &one
Re'uire all (ranted
</Directory>
=ale aclarar que &rohi!ir e ista'o 'e 'ire"torios ser( una !uena &r("ti"a. 2ero 3o$o4 que ahora
$pache requiere la asignaci&n del signo M cuando se emplee adems un signo / ' de no hacerlo, "allarI
Either all Options must start with + or -, or no Option may
2ara que no "alle, siem&re que se agregue un - )desacti+ar, a una opci&n, se 'e!er( agregar un 5
)acti+ar, a las opciones que no se est*n desacti+andoI
<Directory /nuevo/directorio/>
Options -Indexes +FollowSymLinks
...
</Directory>
BPOR *U> EL (IRTUALHOST DEBE LLE(AR LA E%TENSIN +CONFC
5inceramente, esta me resulta una de las polticas menos justi"icables de la historia. 6a e)tensi#n* 'e un
ar"hivo no es ms que parte del nombre del archi+o ' no re&resenta en a!souto e ti&o 7.7E 'e
ar"hivo, como el sistema operati+o pri+ati+o de las 'entanitas ha querido imponer.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
11
1ntonces 6para qu* agregar un .conf a los archi+os7 (odo archi+o que est* dentro de sites)ena*led
debera ser cargado como 5irtual6ost porque 6qui*n colocara all un archi+o que no "uese un 5irtual6ost
habilitado7
5in embargo, apache2.conf en el paquete compilado por Bbuntu 4K.LK, decide establecer que solo los
archi+os con e0tensi&n .con" sean cargados como sitios habilitadosI
# Include the virtual host configurations:
#ncludeOptional sites)ena*led/+.conf
:Nu* chiste; 8uien "oo"ase en sites-enaled un ar"hivo que no &ertene0"a a un $irtualHost
ha!iita'o, estar%a sien'o 'esor'ena'o e in"oherente. 1s por ello, que una buena prctica sera cargar
todos los archi+os que estu+iesen en ese directorioI
Include!"tional sites-enaled/#
.e esa "orma, a e)tensi#n 'e os $irtualHost +a no ser%a un &ro!ema.
YA NO SE TRATA DE UNA MALA DECISIN, SE TRATA DE UN BUG+++
8 esta +e- no es responsabilidad de Bbuntu. 5ucede que en la +ersi&n A.K de $pache ' al menos hasta la
A.K.4L a a"tiva"i#n 'e a o&"i#n $ulti%iews genera un ,ao en $odRewrite "uan'o a 9:.
"ontiene &arte 'e nom!re 'e un ar"hivo e)istente.
MultiViews es una opcin que permite lo que se
denomina negociacin de contenido a travs del
mdulo Negotiation
!uando se solicite a tra+*s de la BHD un archi+o ine0istente, Mod&e(otiation permitir a $pache e"ectuar
una b#squeda por patr&n ' ser+ir aquel archi+o que primero coincida con dicha b#squeda. .e esta "orma, si se
solicitase el archi+o /foo en la BHD, se ser+ira el primer archi+o cu'o nombre coincidiera con la palabra foo,
pudiendo tratarse de foo.php, foo.pn(, etc. 2ero siempre ser el archi+o que primero coincida en la
b#squeda.
!uando se trabaja con el m&dulo Rewrite acti+ado ' se implementa un sistema de BHLs +irtuales )conocidas
entre los usuarios ' pro"esionales del mar=eting como "riendl& >?.s, toda solicitud e"ectuada a tra+*s de la
BHD, es primero manejada por ModRewrite ' solo cuando esto no sea posible, tomara el mando
Mod&e(otiation, pues para eso ha sido creadoI para tratar de solucionar el problema cuando todo lo
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
12
dems "alle. .e esta "orma, si se posee una regla de reescritura como la siguienteI
RewriteRule - whatever.php
(oda solicitud )absolutamente toda, debera ser redirigida por ModRewrite al archi+o whatever.php '
esto, es lo que suceda hasta la aparici&n de la +ersi&n A.K de $pache.

1n esta nue+a +ersi&n, cuando /archivo)'ue)no)e$iste es solicitado, whatever.php es ser+ido. 5in
embargo, al solicitar /si)e$isto el archi+o si)e$isto.php es ser+ido al igual que la petici&n literal
/otro)archivo)'ue)e$iste.php se sir+e de "orma directa. Bn error garra"al que si bien no compromete la
seguridad de "orma directa, podra ponerla en riesgo considerando que la implementaci&n de reglas de
reescritura suele utili-arse para enmascarar las +erdaderas >?@s.
Esto mismo es o que re&ort/ "omo bug a A&a"he;
httpsI<<issues.apache.org<bug-illa<showObug.cgi7idP9QRRJ
$l momento de escribir este artculo, el reporte es mu' reciente ' por lo tanto, no se pueden esgrimir
conjeturas de ning#n tipo sobre el tratamiento que se le ha'a dado al mismo.
.ado que a di"erencia de los dos casos anteriores, aqu se trata de un bug, no e)iste sou"i#n &osi!e
hasta que no se im&emente una a nive 'e core 'e A&a"he. %o obstante, &ue'e im&ementarse una
me'i'a &rovisoria para impedir que el bug se re"leje en nuestros hosts. Lo que debe hacerse en 'esa"tivar
a o&"i#n $ulti%iews. Lamentablemente, la desacti+aci&n de esta opci&n, im&e'ir( a nego"ia"i#n 'e
"onteni'o ' "rente a reglas tales comoI
RewriteRule ./-static0 whatever.php
La solicitud de /static/i(/foo N<* sera negociada como /static/i(/foo.pn( pro+ocando
entonces, un error KLK %ot Eound. =ale aclarar que a 'esa"tivar a o&"i#n $ulti%iews en un directorio,
no ser( &osi!e a"tivara en ninguno 'e sus su!'ire"torios, de manera tal que la acti+aci&n en un caso
como el siguiente, sera absolutamente ignorada por $pacheI
<Directory /foo/>
Options )#nde$es 1FollowSy!in"s -$ulti%iews
</Directory>
<Directory /foo/*ar>
# La activacin de la opcin ulti!iews a"u#, ser#a ignorada
# ya "ue $ar es su$directorio de foo
Options +$ulti%iews
</Directory>
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
13
NO(EDADES SOBRE
,ACKTHESTRIPPER Y
EUROPIOCODE
Servi'ores Seguros en un soo &aso "on =a">?heStri&&er
%ac&The'tripper, el deplo&er para ser'idores que en un solo paso instala! configura # asegura un
servidor (eb completo sobre )buntu *+",-, ahora se encuentra disponible para m4ltiples
distribuciones & 'ersiones gracias al aporte de %ason 'oto
Las distribuciones ' +ersiones soportadas al momento son las siguientesI
=ersiones adaptadas por =ason SotoI
9!untu 14-04 6?S
Cent<S @
Cent<S A
Be!ian @
Be!ian A
=ersiones o"icialesI
9!untu 12-04 6?S; 2gina S .escarga S !&digo Euente
anual del Bsuario )apto para todas las +ersiones ' distribuciones,
=ideotutorial
Euro&ioCo'e + una nueva i!rer%a &ara C+thon
.uropio/ode, el codificador de caracteres basado en modelos permisi'os & empleado por el n4cleo
EuropioEngine, ahora se encuentra disponible (aunque a4n en desarrollo) para 0#thon +"1 & 0#thon 2"3
siendo apto tanto para aplicaciones ;eb como 3es=top e incluso en el %cripting
.ocumentaci&nI
anual completo de 1uropio!ode )inclu'e notas para el desarrollador ' manual del usuario,
Libreras disponiblesI
=avaS"ri&t )+ersi&n estable,I para en+o codi"icado de "ormularios desde el <rontAEnd
CDC )+ersi&n estable,I codi"icaci&n, decodi"icaci&n ' "unciones de re'ersing, limpie-a '
depuraci&n de strings
C+thon )+ersi&n en desarrollo,I codi"icaci&n ' decodi"icaci&n de strings
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
14
TUI9 TE%T USER
INTERFACES EN GNU)BASH
Y PYTHON
Eugenia Bahit agradece a Hugo (@huguidugui) por la revisin ortogrfica de este artculo
LA CREACIN DE INTERFECES
DE TE%TO PARECE SER ALGO
OL(IDADO EN ESTE SIGLO+
SIN EMBARGO, EN EL MUNDO
DE LOS SER(IDORES DONDE
LOS ENTORNOS GRAFICOS NO
DE,ARAN DE SER UNA
MOLESTIA INNECESARIA, LAS
TUI NO PARECEN TENER
FECHA DE CADUCIDAD+
ucho se habla )' hablo, de las TBD )Braphical >ser
@nter"aces, pero de las ?9. )Ce-t >ser @nter"aces, nos
ol+idamos de su e0istencia hasta que aparece alguien que
nos lo recuerda ' eso, "ue lo que sucedi& das atrs en CDitter
cuando un usuario me preguntaba c&mo crearlas.

$ ra- de lo anterior ' tras haberle comentado que antiguamente,


empleaba dialo( para T%B<Bash ' ncurses en ! ' 2'thon. 3ialog,
siempre me haba resultado simple ' sencillo de utili-ar ' jams me
haba dejado con sensaci&n de insatis"acci&n 'a que tena todo
que un programador podra necesitar para la (BD de su %cript o
aplicaci&n ' entonces me surgi& la pregunta 1&or qu/ no utii0a!a
dialog en C+thon2
8 as "ue que me surgieron unas ganas tremendas de escribir una
gua sobre este tema del cual en ms de 49 a?os no he escrito
nunca. :1spero que la dis"ruten;
Nuiero comen-ar primero por introducirlos en el mundo dialo( de T%B<Bash para que puedan ir
"amiliari-ndose con esta herramienta. 1l sitio Ee! o,i"ia de dialo( es httpI<<in+isible/island.net<dialog<
ialog comen! en "##$ de la mano del programador
Savio Lam pero desde "### es escrito y mantenido por
Thomas . !ic"ey, creador de Lyn#, ncurses y #term
%entre muchas otras herramientas% quien
lamenta&lemente decidi$ cambiar la original licencia
%PL del programa por L%PL, permitiendo as que
cualquier persona pudiese crear me'oras privativas
ale'ndolas as del alcance de la comunidad y de su
consecuente estudio.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
15
B*U> ES DIALOGC
3ialog es una herramienta que pro+ee de pseudo inter"aces gr"icas )o inter"aces gr"icas te0tuales, para
nuestras aplicaciones de consola.
1ntre los tipos de artilugios disponibles, se encuentran los cuadros de dilogo )si<no,, calendarios, entradas
de te0to, listas desplegables, etc.
BCMO SE OBTIENEC
3ialog puede instalarse directamente desde repositorios. 1n Be!ian ' deri+adosI
& apt)(et install dialog
CASOS DE USO
1l uso ms "recuente de las (BD es en el %cripting ' programas de consola en general. ediante el comando
an dialo( se puede acceder a toda la a'uda del programa ' obtener as, detalles claros sobre su sinta0is '
argumentos, lo que nos podra dar una idea ms amplia de sus posibles usos.
La sinta0is bsica para utili-ar dialo( esI
dialog ))opciones)counes ))tipo)de)di2lo(o 34ontenido3 alto ancho ))opciones)del)di2lo(o
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
16
Ca$a 'e 'i(ogo norma; 7ostran'o a in,orma"i#n 'e sistema o&erativo
#%&$in&$ash
# 'rchivo: programa(sh
syste5info67ls*5release )ds7
syste5codenae67ls*5release )cs7
read )d 88 s(5*ienvenida << 9OF
:ienvenido al pro(raa de instalaci;n de <ac"=heStripper para >syste5info
/>syste5codenae0.
?ara continuar, pulse en el *ot;n %ceptar.
9OF
dialo( @
))*ac"title 3<ac"=heStripper3 @
))title 3#nforaci;n del Sistea3 @
))s(*o$ 3>s(5*ienvenida3 @
AB CB
1l c&digo anterior producir un dilogo como el siguienteI
5i deseas probar el c&digo anterior )' los siguientes, ' a#n no sabes c&mo hacerlo, abre un terminal ' procura
seguir estos pasosI
4. !rear un archi+oI touch pro(raa.sh
A. $sgnale permisos de ejecuci&nI chod 1$ pro(raa.sh
J. $bre el archi+o anterior con cualquier editor de te0tos, copia el c&digo ' p*galo en el archi+o
programa.sh.
K. (ras guardar el archi+o, ejec#talo desde la terminal escribiendoI ./pro(raa.sh
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
17
Bi(ogo 'e "on,irma"i#n; Con,irman'o antes 'e a"tuar
#%&$in&$ash
syste5info67ls*5release )ds7
syste5codenae67ls*5release )cs7
read )d 88 s(5*ienvenida << 9OF
:ienvenido al pro(raa de instalaci;n de <ac"=heStripper para >syste5info
/>syste5codenae0.
9ste pro(raa instalar2 todo lo necesario para ontar un servidor De* copleto incluidas las
herraientas de se(uridad indispensa*les para antener su servidor a salvo.
E9st2 de se(uro de continuarF
9OF
dialo( @
))*ac"title 3<ac"=heStripper3 @
))title 3#nforaci;n del Sistea3 @
))yesno 3>s(5*ienvenida3 @
AG HB
1l c&digo anterior producir un dilogo como el siguienteI
La opci&n elegida por el usuario, ser capturada ' representada comoI BPU5, APU%o, 2GGPUcualquier tecla
de escape que cancel& la operaci&n. Bn ejemploI
respuesta6>F
case >respuesta in
B0 cd cd deployyserverI sudo ./ds.shII # e)ecuta el archivo de instalacin
A0 r )R deployyserverII # Elimina los archivos descargados
2GG0 echo 3:ye.3II # *o hace nada e imprime un mensa)e en pantalla
esac
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
18
7enF; Eigien'o o&"iones 'e un menF
#%&$in&$ash
syste5info67ls*5release )ds7
syste5codenae67ls*5release )cs7
read )d 88 s(5*ienvenida << 9OF
:ienvenido al pro(raa de instalaci;n de <ac"=heStripper para >syste5info
/>syste5codenae0.
?or favor, eliJa una opci;n para continuarK
9OF
dialo( @
))*ac"title 3<ac"=heStripper3 @
))title 3Opciones3 @
))enu 3>s(5*ienvenida3 @
AG HB ' @
Instalar 3#nstalar y confi(urar todo el sistea3 @
(escargar 3Solo descar(ar los archivos3 @
Salir 3Salir3
1l c&digo anterior producir un dilogo como el siguienteI
1l n#mero 3 corresponde a la cantidad de opciones del men# que sern +isibles )resaltado en rojo en el
c&digo,. Las siguientes lneas corresponden a cada uno de los tem del men#, siendo la string de la i-quierda,
el +alor que ser almacenado por dialo(. 2uede capturarse dicho +alor almacenndolo en un archi+o
temporalI
dialo( @
...
#nstalar 3#nstalar y confi(urar todo el sistea3 @
Descar(ar 3Solo descar(ar los archivos3 @
Salir 3Salir3 )* /tm"/o"cion-elegida
cat /tp/opcion)ele(ida
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
19
G tambi*n se podra capturar en una +ariable, agregando la opci&n com#n ))stdout, aunque no es la "orma
ms recomendada por su autorI
salida+,-dialo( --stdout @
))*ac"title 3<ac"=heStripper3 @
))title 3Opciones3 @
))enu 3>s(5*ienvenida3 @
AG HB L @
#nstalar 3#nstalar y confi(urar todo el sistea3 @
Descar(ar 3Solo descar(ar los archivos3 @
Salir 3Salir3.
echo ,salida
See"tor 'e ar"hivos + 'ire"torios; Eigien'o un 'ire"torio 'e instaa"i#n
#%&$in&$ash
directorio6>/dialo( @
))stdout @
))*ac"title 39uropio 9n(ine #nstaller3 @
))dselect ,/!$0/ @ # utili+ar --fselect en ve+ de ,dselect para seleccionar archivos
AG MB0
cd >directorio
1l c&digo anterior producir un dilogo como el siguienteI
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
20
LO MISMO PERO DESDE PYTHON
L&gicamente que los dilogos +istos anteriormente, son solo una mera introducci&n a la larga lista de
artilugios pro+istos por dialo(. Give> Hite escribi& una e0celente gu%a so!re 'hell 'cripting
+
en la cual
dedica un "a&%tuo so!re dialog
'
que te puede resultar mu' interesante. 2ero teniendo 'a una +isi&n
general sobre dialo( ' sus usos, hablar de la librera "yt1ondialog ser mucho ms sencillo.
C+thonBiaog )p'thondialog.source"orge.net, puede instalarse mediante un simple pip, disponiendo de las
+ersiones para 2'thon A ' J de "orma separadaI
eu(eniaNcococha)(nucitaKO> "i" searc1 "yt1ondialog
pythondialo( ) % ?ython interface to the P&#Q dialo( utility ...
python2)pythondialo( ) % ?ython interface to the P&#Q dialo( ... /?ython 2 *ac"port0
eu(eniaNcococha)(nucitaKO>
eu(eniaNcococha)(nucitaKO> sudo "i" install "yt1on)-"yt1ondialog
1mplear esta librera es tan sencillo comoI
4. importar la clase Dialo( del m&duloC
A. crear una instancia de la clase ' comen-ar a crear cuadros de dilogo.
Los cuadros de dilogo se crean mediante m*todos del objeto Dialo(, cu'os nombres equi+alen a los
di+ersos tipos de dilogos pro+istos por dialo(. Los argumentos de opci&n que antes se pasaban con
))opcion ahora se pasan como cla+es )=e&Dord args,. .e esta "orma, para crear un cuadro de dilogo
normal, bastara con las siguientes instruccionesI
#%&usr&$in&env python
# --- coding: utf-. ---
fro dialo( iport Dialo(
dialo( 6 Dialo(/0
dialo(.s(*o$/title6u3=Rtulo3, te$t6u3MensaJe del cuadro de di2lo(o30
respuesta 6 dialo(.yesno/title6u3=Rtulo3, te$t6u39st2 se(uro de continuarF30
if respuesta 66 8o"8K
print 39st2 se(uro3
elif respuesta 66 8cancel8K
print 3&o. &o esta*a se(uro3
!laro que no todo es color de rosa ' algunas di"icultades se pueden presentar. La ms notable de ellas es para
los hispanoparlantes, el problema eterno con los caracteres no $5!DD en 2'thon. %o basta con de"inir la
codi"icaci&n de caracteres como B(E/R al inicio. 2ero se pueden e+itar todos los con"lictos empleando
cadena.decode/8utf)S80 como se muestra a continuaci&nI
A httpI<<bash.c'berciti.bi-<guide<ainO2age
J httpI<<bash.c'berciti.bi-<guide<BashOdispla'OdialogObo0es
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
21
#%&usr&$in&env python
# --- coding: utf-. ---
fro dialo( iport Dialo(
dialo( 6 Dialo(/0
dialo(.s(*o$/title6u3=Rtulo3, te$t6u3MensaJe del cuadro de di2lo(o30
respuesta 6 dialo(.yesno/title6u3=Rtulo3,
te$t6230st4 seguro de continuar52.decode-6utf-76.0
if respuesta 66 8o"8K
print 39st2 se(uro3
elseK
print 3&o. &o esta*a se(uro3
Luego, las opciones comunes pueden setearse mediante m*todos, aunque en +ersiones recientes no son
del todo intuiti+os. 2or ejemploI
dialo( 6 Dialo(/0
dialo(.set8ackground8title/3=Rtulo del pro(raa30
1s la +ersi&n moderna deI
dialo( 6 Dialo(/0
dialo(.add8"ersistent8args/T3))*ac"title3, 3=Rtulo del pro(raa3U0
%inguno de los dos es demasiado intuiti+o pero tal +e-, en la "orma correspondiente a las +ersiones anteriores,
con solo recordar un m*todo, bastaba para de"inir la lista con el argumento original ' su +alor.
1l sitio Veb o"icial es httpI<<p'thondialog.source"orge.net< pero no posee ms que unos pocos ejemplos. 5in
embargo, siempre podemos hacer unI
eu(eniaNcococha)(nucitaKO> "yt1on
...
>>> from dialog im"ort (ialog
>>> 1el"-(ialog.
Lo anterior, nos permitir acceder a una documentaci&n mu' completa sobre esta librera. 6i
recomendaci&n7 2rueba primero jugar con dialo( en T%B<Bash. 1nti*ndelo, dis"r#talo ' encuentra una
utilidad. Heci*n all, comien-a a e0perimentar desde 2'thon pero 'a, con una idea ms concreta ' una
necesidad de uso real. .e esa "orma, logrars mejores resultados.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
22
PYTHON WEB SIN
FRAMEWORKS9 SOBRE LAS
SESIONES Y EL ACCESO
RESTRINGIDO
Eugenia Bahit agradece a Hugo (@huguidugui) por la revisin ortogrfica de este artculo
BEAKER ES UN MIDDLEWARE
PARA WSGI *UE PERMITE,
ENTRE OTRAS
CARACTER'STICAS, EFECTUAR
UN MANE,O DE SESIONES
A(AN&ADO EN APLICACIONES
WEB CREADAS CON PYTHON+
SU IMPLEMENTACIN ES
(ERDADERAMENTE SENCILLA Y
SE LOGRA EN POCOS PASOS+
oco a poco, la ingeniera de 5o"tware tras haber ganado
terreno en el mbito Veb, se est +olcando ms por 2'thon '
cada +e- son ms los programadores que le pierden el miedo
a lo desconocido ' se animan a hacer +erdadera ingeniera creando
aplicaciones sin recurrir a 3#ango o a otros "rameDor=s de similares
caractersticas.
2
1n el desarrollo de aplicaciones Veb siempre ha sido la restricci&n
de acceso ' el manejo de usuarios, un gran hito para los reci*n
llegados. 1n lenguajes como 2@2 e0iste no solo un soporte nati+o
para el manejo de sesiones 'e usuario* sino que adems,
abunda la bibliogra"a al respecto. 2ero en lenguajes como 2'thon, la
documentaci&n pareciera re"lejar que el manejo de sesiones de
usuarios solo sera posible empleando "rameDor=s. 8 esto no es as.
2ero para pro"undi-ar a#n ms, es necesario primero, comprender
de qu* se habla en realidad cuando hablamos de sesiones. 8 para
ello, recomiendo leer el artculo Sesiones 1qu/ son reamente +
en qu/ "onsisten2 I'esmiti,i"an'o e "on"e&to 'e sesionesJ*
publicado en la edici&n %3Q de (he Griginal @acWer. Bna +ersi&n del
artculo en 2.E puede obtenerse desde la siguiente BHLI
httpI<<librar'.originalhacWer.org<search<sesiones
SESIONES EN PYTHON
!omo bien comenc* diciendo, 2'thon no tiene un soporte nati+o para la implementaci&n de sesiones ' el
manejo de coo=ies suele ser algo engorroso con V5TD. 1sto, con+ierte al trabajo de desarrollar un manejador
de sesiones en una tarea larga ' compleja de emprender, aunque no imposible. $qu, abarcaremos el manejo
de sesiones empleando la librera Bea>er )httpI<<beaWer.readthedocs.org<en<latest<,.
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
23
PRIMEROS PASOS
5e utilice BeaWer, cualquier otra librera o se desarrolle una propia, las herramientas con las cules debe
contarse sonI
9na !ase 'e 'atos "on a menos un usuario 'e &rue!a en una ta!a 'e usuarios
-- /eempla+ar foo$ar por el nom$re de la $ase de datos a utili+ar
PS9 foo*arI
-- Estructura $ase de la ta$la usuarios
4R9%=9 =%:!9 usuarios /
usuario5id #&=/AA0 &O= &P!! %P=O5#&4R9M9&= ?R#M%RV W9V,
usernae V%R4X%R/2G0 &O= &P!!,
password V%R4X%R/L20 &O= &P!!
0 9&Y#&96#nnoD:I
-- 0suario de prue$a
#&S9R= #&=O usuarios
/usernae, password0
V%!P9S /8prue*a8, 8cSZL*adCSZ2H*MGHd*edLZMCBeCafdC280I
cSZL*adCSZ2H*MGHd*edLZMCBeCafdC2 es el hash 7BK de la cla+e "ruea.
Luego, necesitaremos un ,ormuario 'e ini"io 'e sesi#nI
<for ethod68?OS=8 action68/usuarios/validar8>
PsuarioK <input type68te$t8 nae68u8 id68usernae8><*r>
4laveK <input type68password8 nae68p8 id68password8>
<*utton type68su*it8>#n(resar</*utton>
</for>
2or consiguiente, un m&dulo de usuarios )usuarios."y, con un re"urso &F!i"o en"arga'o 'e mostrar e
,ormuarioI
def in(resar/0K
with open/8/ruta/a/for5lo(in.htl8, 8r80 as archivoK
return archivo.read/0
Bna ,un"i#n vai'ar )en el m&dulo de usuarios, encargada de +eri"icar que los datos ingresados en el
"ormulario anterior, coincidan con el de un usuario en la base de datos ' en caso a"irmati+o, in+oque al
iniciador de sesi&n o de lo contrario, muestre nue+amente el "ormularioI
fro hashli* iport hashli*
fro core.postdata iport ?OS=DataXandler, ?OS=Data4leaner
fro core.d*layer iport run5'uery
fro core.sessions iport iniciar # 1O2O
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
24
9:!S;(ata/andler
def validar/5?OS=0K # application de$er3 enviarle environ como par3metro
usuario 6 ?OS=Data4leaner/0.saniti[e5strin(/5?OS=T8u8U0
clave 6 hashli*.dG/5?OS=T8p8U0.he$di(est/0
s'l 6 333S9!94= usuario5id FROM usuarios
DX9R9 usernae 6 8\s8
%&D password 6 8\s8333 \ /usuario, clave0
resultados 6 run5'uery/s'l0
return iniciar/0 if len/resultados0 66 A else in(resar/0
1l archi+o de sesiones )sessions."y, deber hospedarse a ni+el del core ' contar con al menos las
"unciones para iniciar una sesi&n, destruirla ' +eri"icar una sesi&n acti+a )completaremos las "unciones ms
adelante,I
def iniciar/0K
pass
def destruir/0K
pass
def verificar/0K
pass
IMPLEMENTANDO BEAKER
$nte todo, para poder utili-ar BeaWer ser necesario instalarlo desde 2'2iI
sudo pip install *ea"er
Luego, sern necesarios algunos cambios en nuestro controlador ' en la "unci&n application. 1l primer
paso ser im&ortar e middle4areI
fro *ea"er.iddleware iport SessionMiddleware
$ continuaci&n, a ,un"i#n a""lication "am!iar( 'e nom!re )puede elegirse cualquier nombre, 'a que
deber ser en+uelta por el middleDare ' *ste, ser quien responda ante la llamada de V5TDI
def application/environ, start5response0K
def start/environ, start5response0K
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
25
Einalmente, e middle4are envover( a a e) ,un"i#n a""lication ' *ste ser quien act#e ante la
in+ocaci&n de V5TDI
# 4onfiguraciones necesarias para el iddleware
*ea"er5dic 6 ]
8session.type8K 8file8,
8session.coo"ie5e$pires8K =rue,
8session.auto8K =rue,
8session.data5dir8K 8/tp/sessions8,
^

a""lication + Session$iddleware-start< eaker8dic.
EL ARCHI(O DE SESIONES
$hora completaremos las "unciones de"inidas en el archi+o de sesiones. Las varia!es 'e sesi#n generadas
por Bea=er, se encontrarn disponibles en la "ave eaker.session 'e 'i""ionario environ. La "unci&n
de iniciali-aci&n de sesi&n se encargar de crear +ariables de sesi&n que nos a'uden a identi"icar si un usuario
se encuentra logueado en nuestro sistema. !rearemos A +ariables de sesi&nI lo((ed )booleana, '
usernae )string,. 2ara lograrlo, ser necesario contar con el diccionario environ por lo cual, primero,
modi"icaremos la "unci&n validar/0 de usuarios.py )para que nos pase este parmetro,I
N?OS=DataXandler
def validar/5?OS=, environ0K
usuario 6 ?OS=Data4leaner/0.saniti[e5strin(/5?OS=T8u8U0
#(((
return iniciar/environ< usuario0 if len/resultados0 66 A else in(resar/0
8 ahora s, completaremos la ,un"i#n iniciar creando las nue+as +ariables de sesi&nI
def iniciar/environ, usernae0K
environT8*ea"er.session8UT8lo((ed8U 6 =rue
environT8*ea"er.session8UT8usernae8U 6 usernae
2ara 'estruir una sesi#n bastar con in+ocar al m*todo delete/0 /creado por BeaWer/I
def destruir/environ0K
environT8*ea"er.session8U.delete/0
8 para "inali-ar este archi+o, a ,un"i#n que veri,i"a a sesi#n ser la "rutilla del postre I,
1sta "unci&n se encargar de buscar las +ariables de sesi&n dentro de *ea"er.session en environ. .e
encontrarla nada malo podra pasar pero de no encontrarla, deber destruir las e+entuales +ariables de
sesi&n residuales que puedan quedar e in+ocar a la "unci&n de solicitud de datos del m&dulo de usuarios. 2or
esto moti+o, la ,un"i#n veri,i"ar ser un decorador que en+uel+a a aquellas "unciones cu'o acceso se
The Original Hacker www.originalhacker.org
2013, 2014 Eugenia Bahit www.eugeniabahit.com Bajo Licencia Creative Commons BY-NC-SA
26
encuentre restringido. =eamos c&mo lo lograrI
fro usuarios iport in(resar
def verificar/funcion5restrin(ida0K
def wrapper/+ar(s, ++"war(s0K
# 4omien+o diciendo "ue el usuario no est3 logueado hasta compro$arlo
usuario5lo(ueado 6 False
# O$tengo el diccionario environ 5suponiendo es el primer argumento6
environ 6 ar(sTBU
# !erifico si las varia$les de sesin est3n disponi$les
e$iste5var5lo((ed 6 8lo((ed8 in environT8*ea"er.session8U
e$iste5var5unae 6 8usernae8 in environT8*ea"er.session8U
# 7i est3n disponi$les, modifico el valor de usuario8logueado con el de logged
if e$iste5var5lo((ed and e$iste5var5unaeK
# o$tengo el valor de la varia$le logged
usuario5lo(ueado 6 environT8*ea"er.session8UT8lo((ed8U
# 7i el usuario est3 logueado, devuelvo la funcin decorada
if usuario5lo(ueadoK
return funcion5restrin(ida/+ar(s, ++"war(s0
# 7ino, destruyo residuales y devuelvo la funcin para loguearse
elseK
destruir/0
return in(resar/0
return wrapper
SWITCHEANDO SOLICITUDES EN EL CONTROLADOR
Bna +e- preparados los m&dulos de usuarios ' sesiones ' adaptado el controlador, habr que sDitchear las
BHL teniendo en cuenta la siguiente tabla de re"erenciaI
A""i#nLMun"ionai'a' 9:6 Mun"i#n a invo"ar I&ar(metrosJ
.ngresar a sistema
)muestra "ormulario de logueo,
/usuarios/in(resar usuarios.in(resar/0
Geri,i"ar os 'atos 'e loguin
)action del "ormulario anterior,
/usuarios/validar usuarios.validar/environ, environ0
Minai0ar una sesi#n /usuarios/salir sessions.destruir/environ0
RESTRINGIR EL ACCESO
2ara restringir el acceso a una "unci&n determinada solo bastar con decorarla con la "unci&n +eri"icar del
m&dulo de sesionesI
fro core.sessions iport verificar
9verificar
def funcion5con5acceso5restrin(ido/0K
pass
409272207688
409272207688
9

También podría gustarte