[cpif] r185 - in trunk: . frontend-web
svn at argo.es
svn at argo.es
Fri Jun 22 19:02:17 CEST 2007
Author: jcea
Date: Fri Jun 22 19:02:17 2007
New Revision: 185
Log:
Aparte de comprobar si los campos en el POST estan
vacios o no, comprobamos tambien que existan.
Es un mecanismo de proteccion ante ataques.
Modified:
trunk/TODO
trunk/frontend-web/url_nuevo_hilo_POST.py
trunk/frontend-web/url_nuevo_post_POST.py
trunk/frontend-web/url_nuevo_usuario_POST.py
Modified: trunk/TODO
==============================================================================
--- trunk/TODO (original)
+++ trunk/TODO Fri Jun 22 19:02:17 2007
@@ -133,3 +133,7 @@
- 20070621: Si que podemos tener metatags vacios... Limpiar
codigo al respecto.
+- 20070622: FRONTAL WEB: Verificar los mensajes escritos. Por
+ ejemplo, no se deberia poder abrir un hilo con un titulo
+ excesivamente largo o de mas de una linea.
+
Modified: trunk/frontend-web/url_nuevo_hilo_POST.py
==============================================================================
--- trunk/frontend-web/url_nuevo_hilo_POST.py (original)
+++ trunk/frontend-web/url_nuevo_hilo_POST.py Fri Jun 22 19:02:17 2007
@@ -2,6 +2,14 @@
from globales import monitor
+def pagina_error(texto) :
+ import skins
+ pagina = skins.Skin(path,usuario)
+ pagina.load_dict({"page_title": "Error"})
+ pagina.load_url(["error"])
+ pagina.load_dict({"generic_message": "<h1>%s</h1>" %texto})
+ return pagina.web()
+
@monitor
def gestiona_url(conn,handler,path,usuario) :
@@ -19,9 +27,18 @@
import cgi
ctype,pdict=cgi.parse_header(handler.headers.getheader('content-type'))
cuerpo=cgi.FieldStorage(fp=handler.rfile,headers=handler.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
- titulo=cgi.escape(cuerpo.getfirst("titulo"))
- texto=cgi.escape(cuerpo.getfirst("texto"))
+ titulo=cuerpo.getfirst("titulo")
+ texto=cuerpo.getfirst("texto")
+ if not (titulo and texto) : # Incluye tanto el caso de vacios como de inexistentes
+ return pagina_error("El Título y el Texto no pueden estar vacios")
+ titulo=cgi.escape(titulo)
+ texto=cgi.escape(texto)
texto=texto.replace("\r","").replace("\n","<br/>\r\n")
database.mensaje_add(conn,texto,usuario,titulo=titulo,metatag=metatag)
return (302,{"Location":"/indice/%d" %metatag},"")
+
+
+ pagina.load_url(["error"])
+ pagina.load_dict({"generic_message": "<h1>No puedes dejar ningun campo no opcional en blanco</h1>"})
+ return (pagina.web())
Modified: trunk/frontend-web/url_nuevo_post_POST.py
==============================================================================
--- trunk/frontend-web/url_nuevo_post_POST.py (original)
+++ trunk/frontend-web/url_nuevo_post_POST.py Fri Jun 22 19:02:17 2007
@@ -2,6 +2,14 @@
from globales import monitor
+def pagina_error(texto) :
+ import skins
+ pagina = skins.Skin(path,usuario)
+ pagina.load_dict({"page_title": "Error"})
+ pagina.load_url(["error"])
+ pagina.load_dict({"generic_message": "<h1>%s</h1>" %texto})
+ return pagina.web()
+
@monitor
def gestiona_url(conn,handler,path,usuario) :
@@ -20,7 +28,10 @@
import cgi
ctype,pdict=cgi.parse_header(handler.headers.getheader('content-type'))
cuerpo=cgi.FieldStorage(fp=handler.rfile,headers=handler.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
- texto=cgi.escape(cuerpo.getfirst("texto"))
+ texto=cuerpo.getfirst("texto")
+ if not texto : # Incluye tanto el caso de vacio como de inexistente
+ return pagina_error("El Texto no puede estar vacio")
+ texto=cgi.escape(texto)
texto=texto.replace("\r","").replace("\n","<br/>\r\n")
database.mensaje_add(conn,texto,usuario,hilo=hilo)
return (302,{"Location":"/indice/%d" %metatag}, "")
Modified: trunk/frontend-web/url_nuevo_usuario_POST.py
==============================================================================
--- trunk/frontend-web/url_nuevo_usuario_POST.py (original)
+++ trunk/frontend-web/url_nuevo_usuario_POST.py Fri Jun 22 19:02:17 2007
@@ -22,18 +22,28 @@
import cgi
ctype,pdict=cgi.parse_header(handler.headers.getheader('content-type'))
cuerpo=cgi.FieldStorage(fp=handler.rfile,headers=handler.headers,environ={'REQUEST_METHOD':'POST'},keep_blank_values=1)
- nick=cuerpo.getfirst("usuario").strip()
- clave1=cuerpo.getfirst("clave1").strip()
- clave2=cuerpo.getfirst("clave2").strip()
+ nick=cuerpo.getfirst("usuario")
+ clave1=cuerpo.getfirst("clave1")
+ clave2=cuerpo.getfirst("clave2")
+ if not (nick and clave1 and clave2) : # Comprobamos el caso de campos inexistentes
+ pagina.load_url(["error"])
+ pagina.load_dict({"generic_message": "<h1>No puedes dejar ningun campo no opcional en blanco</h1>"})
+ return pagina.web()
+
+ nick=nick.strip()
+ clave1=clave1.strip()
+ clave2=clave2.strip()
OpenIDs=set()
for i in xrange(1,6) :
- OpenID=cuerpo.getfirst("OpenID%d" %i).strip()
- if OpenID : OpenIDs.add(OpenID)
+ OpenID=cuerpo.getfirst("OpenID%d" %i)
+ if OpenID : # Comprobamos el caso de campos inexistentes
+ OpenID=OpenID.strip()
+ if OpenID : OpenIDs.add(OpenID)
if not (nick and clave1 and clave2) :
pagina.load_url(["error"])
pagina.load_dict({"generic_message": "<h1>No puedes dejar ningun campo no opcional en blanco</h1>"})
- return (pagina.web())
+ return pagina.web()
if clave1!=clave2 :
pagina.load_url(["error"])
More information about the cpif
mailing list