Problema amb la persistència de logs al servidor de Catalanitzador

Ep Pau, Quan vam desenvolupar el servidor de dades[1] ens vam trobar que les contrabarres (\) no es desaven bé. Les dades del Catalanitzador s'envien amb un POST amb dos camps (xml) amb les estadístiques i (log) amb el log si hi hagut un error. El Pau ho va solucionar per les dades estadístiques eliminant la contrabarra [2] (un hack temporal que s'ha quedat per sempre) però mai es va solucionar el problema pels LOG. Durant un temps, vam pensar que era un problema de codificació de caràcters. El problema a dia d'avui és que si vas al camp LOG de la BBDD les contrabarres no hi són. Això és impediment per entendre els camins: 20:21:11.0921 - LibreOfficeInspector::_readLocale. Could not open 'C:UsersLolitaAppDataRoamingLibreOffice4userregistrymodifications.xcu' Aghhh!!! És impossible saber si per exemple en algun escenari ens em deixat una contrabarra, ja que no hi són. He mirat el problema i he arribat a la conclusió que és un problema relacionat amb com persistim les cadenes al MySQL. Resulta que el MySQL en els camps de text[3] té uns caràcters reservats que comencen amb \. Llavors, la contrabarra no és processa sinó s'escapa com a doble contrabarra. Hi ha varies opcions per resoldre el problema: 1) Usar les noves alternatives a mysql_real_escape_string() [4] 2) Desactivar el suport d'escapament de caràcters Backslash [5] Qualsevol de les opcions m'està bé. També caldria eliminar llavors el codi [2]. Pau, pots fer els canvis en l'entorn de desenvolupament i llavors puc fer proves a veure si funciona? Moltes gràcies Jordi, [1] https://github.com/Softcatala/Catalanitzador/blob/master/Server/parser.php [2] https://github.com/Softcatala/Catalanitzador/blob/master/Server/parser.php#L... [3] http://dev.mysql.com/doc/refman/5.0/en/string-literals.html [4] http://es1.php.net/manual/es/function.mysql-real-escape-string.php [5] http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html#sqlmode_no_backslash_es... -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola Jordi, Cap problema. Ho faré i et dic :) El dia 15 setembre de 2014 23:33, Jordi Mas <jmas@softcatala.org> ha escrit:
Ep Pau,
Quan vam desenvolupar el servidor de dades[1] ens vam trobar que les contrabarres (\) no es desaven bé. Les dades del Catalanitzador s'envien amb un POST amb dos camps (xml) amb les estadístiques i (log) amb el log si hi hagut un error.
El Pau ho va solucionar per les dades estadístiques eliminant la contrabarra [2] (un hack temporal que s'ha quedat per sempre) però mai es va solucionar el problema pels LOG. Durant un temps, vam pensar que era un problema de codificació de caràcters.
El problema a dia d'avui és que si vas al camp LOG de la BBDD les contrabarres no hi són. Això és impediment per entendre els camins:
20:21:11.0921 - LibreOfficeInspector::_readLocale. Could not open 'C: UsersLolitaAppDataRoamingLibreOffice4userregistrymodifications.xcu'
Aghhh!!! És impossible saber si per exemple en algun escenari ens em deixat una contrabarra, ja que no hi són.
He mirat el problema i he arribat a la conclusió que és un problema relacionat amb com persistim les cadenes al MySQL. Resulta que el MySQL en els camps de text[3] té uns caràcters reservats que comencen amb \. Llavors, la contrabarra no és processa sinó s'escapa com a doble contrabarra. Hi ha varies opcions per resoldre el problema:
1) Usar les noves alternatives a mysql_real_escape_string() [4] 2) Desactivar el suport d'escapament de caràcters Backslash [5]
Qualsevol de les opcions m'està bé. També caldria eliminar llavors el codi [2].
Pau, pots fer els canvis en l'entorn de desenvolupament i llavors puc fer proves a veure si funciona?
Moltes gràcies
Jordi,
[1] https://github.com/Softcatala/Catalanitzador/blob/master/ Server/parser.php [2] https://github.com/Softcatala/Catalanitzador/blob/master/ Server/parser.php#L18 [3] http://dev.mysql.com/doc/refman/5.0/en/string-literals.html [4] http://es1.php.net/manual/es/function.mysql-real-escape-string.php [5] http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html# sqlmode_no_backslash_escapes -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola Jordi, Després de fer un parell de proves i recordant-me de com va costar trobar aquella 'solució temporal', el punt 5 sembla realment la solució definitiva. He activat això en _dev, he comentat la línia 'temporal' i sembla haver funcionat. Pots fer un parell de tests i confirmar-me si va bé? Si no hi ha cap problema, ho activem. És molt fàcil: SET @old_sql_mode=@@sql_mode;SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES'); SAlut! El dia 17 setembre de 2014 12:48, Pau Iranzo <paulists@gmail.com> ha escrit:
Hola Jordi,
Cap problema. Ho faré i et dic :)
El dia 15 setembre de 2014 23:33, Jordi Mas <jmas@softcatala.org> ha escrit:
Ep Pau,
Quan vam desenvolupar el servidor de dades[1] ens vam trobar que les contrabarres (\) no es desaven bé. Les dades del Catalanitzador s'envien amb un POST amb dos camps (xml) amb les estadístiques i (log) amb el log si hi hagut un error.
El Pau ho va solucionar per les dades estadístiques eliminant la contrabarra [2] (un hack temporal que s'ha quedat per sempre) però mai es va solucionar el problema pels LOG. Durant un temps, vam pensar que era un problema de codificació de caràcters.
El problema a dia d'avui és que si vas al camp LOG de la BBDD les contrabarres no hi són. Això és impediment per entendre els camins:
20:21:11.0921 - LibreOfficeInspector::_readLocale. Could not open 'C: UsersLolitaAppDataRoamingLibreOffice4userregistrymodifications.xcu'
Aghhh!!! És impossible saber si per exemple en algun escenari ens em deixat una contrabarra, ja que no hi són.
He mirat el problema i he arribat a la conclusió que és un problema relacionat amb com persistim les cadenes al MySQL. Resulta que el MySQL en els camps de text[3] té uns caràcters reservats que comencen amb \. Llavors, la contrabarra no és processa sinó s'escapa com a doble contrabarra. Hi ha varies opcions per resoldre el problema:
1) Usar les noves alternatives a mysql_real_escape_string() [4] 2) Desactivar el suport d'escapament de caràcters Backslash [5]
Qualsevol de les opcions m'està bé. També caldria eliminar llavors el codi [2].
Pau, pots fer els canvis en l'entorn de desenvolupament i llavors puc fer proves a veure si funciona?
Moltes gràcies
Jordi,
[1] https://github.com/Softcatala/Catalanitzador/blob/master/ Server/parser.php [2] https://github.com/Softcatala/Catalanitzador/blob/master/ Server/parser.php#L18 [3] http://dev.mysql.com/doc/refman/5.0/en/string-literals.html [4] http://es1.php.net/manual/es/function.mysql-real-escape-string.php [5] http://dev.mysql.com/doc/refman/5.1/en/sql-mode.html# sqlmode_no_backslash_escapes -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

El 18/09/2014 07:50, Pau Iranzo ha escrit:
Hola Jordi,
Després de fer un parell de proves i recordant-me de com va costar trobar aquella 'solució temporal', el punt 5 sembla realment la solució definitiva.
He activat això en _dev, he comentat la línia 'temporal' i sembla haver funcionat.
Pots fer un parell de tests i confirmar-me si va bé? Si no hi ha cap problema, ho activem. És molt fàcil:
|SET @old_sql_mode=@@sql_mode; SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES');|
Hola Pau, Doncs no em funciona. A la base de dades catalanitzador_dev pots veure les sessions 39380 i 39379 que he fet fa una estona i encara mostren el mateix problema. Per exemple, al registre 39380 al camp log pots veure la línea: 19:03:21.0951 - FileVersionInfo::ReadVersion. File 'C:Program FilesWindows LiveInstallerwlarp.exe' version I en comptes de "c:\Program" ens trobem "c:Program". Quines proves has fet? Pots provar fer un post amb el camp log que tingui \? La prova que has fet tu és el registre 39378? Si és així fitxa´t que els paths són / (aquestes sempre han anat bé) els que fallen són el backslash "\". Gràcies Pau! Jordi, -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola Jordi, Veig que el problema no està en la línia que comentaves, sinó en la cadena que fa l'escape de l'string [1]. He fet una modifcació que accepta les barres, però per desgràcia és un forat de seguretat (ara mateix funciona, pots provar-ho). He de mirar alguna altra solució. [1] https://github.com/Softcatala/Catalanitzador/blob/master/Server/lib/class/re... El dia 18 setembre de 2014 19:17, Jordi Mas <jmas@softcatala.org> ha escrit:
El 18/09/2014 07:50, Pau Iranzo ha escrit:
Hola Jordi,
Després de fer un parell de proves i recordant-me de com va costar trobar aquella 'solució temporal', el punt 5 sembla realment la solució definitiva.
He activat això en _dev, he comentat la línia 'temporal' i sembla haver funcionat.
Pots fer un parell de tests i confirmar-me si va bé? Si no hi ha cap problema, ho activem. És molt fàcil:
|SET @old_sql_mode=@@sql_mode; SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES');|
Hola Pau,
Doncs no em funciona. A la base de dades catalanitzador_dev pots veure les sessions 39380 i 39379 que he fet fa una estona i encara mostren el mateix problema.
Per exemple, al registre 39380 al camp log pots veure la línea:
19:03:21.0951 - FileVersionInfo::ReadVersion. File 'C:Program FilesWindows LiveInstallerwlarp.exe' version
I en comptes de "c:\Program" ens trobem "c:Program".
Quines proves has fet? Pots provar fer un post amb el camp log que tingui \?
La prova que has fet tu és el registre 39378? Si és així fitxa´t que els paths són / (aquestes sempre han anat bé) els que fallen són el backslash "\".
Gràcies Pau!
Jordi,
-- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

El 18/09/2014 21:00, Pau Iranzo ha escrit:
Hola Jordi,
Veig que el problema no està en la línia que comentaves, sinó en la cadena que fa l'escape de l'string [1]. He fet una modifcació que accepta les barres, però per desgràcia és un forat de seguretat (ara mateix funciona, pots provar-ho).
He de mirar alguna altra solució.
[1] https://github.com/Softcatala/Catalanitzador/blob/master/Server/lib/class/re...
Ara mateix el servidor torna 200 però la informació no apareix a la taula sessions. Alguna cosa està fallant. Si vols et puc proporcionar un Catalanitzador perquè facis proves fàcilment. Atentament, Jordi, -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola Jordi, Si pots donar-me un catalanitzador que es connecte amb la bd de test, millor :) Per cert, l'ordre que et comentava abans ([1] a dalt) el que fa realment és un mysql_real_escape_string(stripslashes($str), $this->dbh). Possiblement l'stripslashes siga el problema. Faré algunes proves més. El dia 18 setembre de 2014 22:49, Jordi Mas <jmas@softcatala.org> ha escrit:
El 18/09/2014 21:00, Pau Iranzo ha escrit:
Hola Jordi,
Veig que el problema no està en la línia que comentaves, sinó en la cadena que fa l'escape de l'string [1]. He fet una modifcació que accepta les barres, però per desgràcia és un forat de seguretat (ara mateix funciona, pots provar-ho).
He de mirar alguna altra solució.
[1] https://github.com/Softcatala/Catalanitzador/blob/master/ Server/lib/class/result.php#L42
Ara mateix el servidor torna 200 però la informació no apareix a la taula sessions. Alguna cosa està fallant.
Si vols et puc proporcionar un Catalanitzador perquè facis proves fàcilment.
Atentament,
Jordi,
-- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola de nou, Jordi, prova de fer una prova ara. El que he fet ha estat crear una funció alternativa que només s'aplica al log i a la qual no fem el strpslashes, però continuem filtrant la cadena. Les meues proves són totes bones ara (abans hi havia una funció que no tirava bé). Salut, Pau El dia 19 setembre de 2014 7:17, Pau Iranzo <paulists@gmail.com> ha escrit:
Hola Jordi,
Si pots donar-me un catalanitzador que es connecte amb la bd de test, millor :)
Per cert, l'ordre que et comentava abans ([1] a dalt) el que fa realment és un mysql_real_escape_string(stripslashes($str), $this->dbh). Possiblement l'stripslashes siga el problema. Faré algunes proves més.
El dia 18 setembre de 2014 22:49, Jordi Mas <jmas@softcatala.org> ha escrit:
El 18/09/2014 21:00, Pau Iranzo ha escrit:
Hola Jordi,
Veig que el problema no està en la línia que comentaves, sinó en la cadena que fa l'escape de l'string [1]. He fet una modifcació que accepta les barres, però per desgràcia és un forat de seguretat (ara mateix funciona, pots provar-ho).
He de mirar alguna altra solució.
[1] https://github.com/Softcatala/Catalanitzador/blob/master/ Server/lib/class/result.php#L42
Ara mateix el servidor torna 200 però la informació no apareix a la taula sessions. Alguna cosa està fallant.
Si vols et puc proporcionar un Catalanitzador perquè facis proves fàcilment.
Atentament,
Jordi,
-- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

El 19/09/2014 07:29, Pau Iranzo ha escrit:
Hola de nou,
Jordi, prova de fer una prova ara. El que he fet ha estat crear una funció alternativa que només s'aplica al log i a la qual no fem el strpslashes, però continuem filtrant la cadena.
Les meues proves són totes bones ara (abans hi havia una funció que no tirava bé).
Moltes gràcies Pau He fet les següents proves: - Amb el Catalanitzador per al Mac - Amb el Catalanitzador per al Windows (enviant logs) - Amb el Catalanitzador per al Windows (sense enviar logs) Tot ha anat bé. Quan enviem els logs es veuen bé :) :) !!!! Jo com a següent pas pujaria el codi a github perquè podem donar-li un cop d'ull, i després, ho passaria a producció. Atentament, Jordi, -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola, He fet el commit [1]. Caldria fer algunes proves bàsiques de MySQL injection, per veure si el canvi que he fet [2] a la biblioteca de connexió a la bd pot suposar algun problema de seguretat. Algú sap fer això? [1] https://github.com/Softcatala/Catalanitzador/commit/967c81d4fc3fc847d68895a1... [2] https://github.com/Softcatala/Catalanitzador/commit/967c81d4fc3fc847d68895a1... El dia 19 setembre de 2014 8:42, Jordi Mas <jmas@softcatala.org> ha escrit:
El 19/09/2014 07:29, Pau Iranzo ha escrit:
Hola de nou,
Jordi, prova de fer una prova ara. El que he fet ha estat crear una funció alternativa que només s'aplica al log i a la qual no fem el strpslashes, però continuem filtrant la cadena.
Les meues proves són totes bones ara (abans hi havia una funció que no tirava bé).
Moltes gràcies Pau
He fet les següents proves:
- Amb el Catalanitzador per al Mac - Amb el Catalanitzador per al Windows (enviant logs) - Amb el Catalanitzador per al Windows (sense enviar logs)
Tot ha anat bé. Quan enviem els logs es veuen bé :) :) !!!!
Jo com a següent pas pujaria el codi a github perquè podem donar-li un cop d'ull, i després, ho passaria a producció.
Atentament,
Jordi, -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

El 20/09/2014 07:52, Pau Iranzo ha escrit:
Hola,
He fet el commit [1]. Caldria fer algunes proves bàsiques de MySQL injection, per veure si el canvi que he fet [2] a la biblioteca de connexió a la bd pot suposar algun problema de seguretat.
Algú sap fer això?
Hola Pau, No sóc cap expert en seguretat o PHP però sembla que la funció mysql_real_escape_string que usem protegeix en la majoria de casos. Sembla que hi ha casos que no per això[1]. Les dades les enviem a través d'un POST des d'una aplicació. Això té un nivell de visibilitat molt més baix que per exemple un formulari obert a una web web. En el pitjor dels casos, el que podria passar és que modifiquessin les dades de la base de dades Catalanitzador. Aquesta base de dades només l'usem per analitzar dades. Si alteressin les dades no seria un drama. Entenc que tenim còpia de seguretat. Jo el que recomanaria és si ningú té res més a dir pujar-ho a producció. Atentament, Jordi, [1] http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-my... -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola Jordi, La pose'm aquesta nit en producció, d'acord? (la posaria ara, però he d'agafar el cotxe 9 hores i si passa alguna cosa no ho podré canviar) SAlut! El dia 25 setembre de 2014 21:51, Jordi Mas <jmas@softcatala.org> ha escrit:
El 20/09/2014 07:52, Pau Iranzo ha escrit:
Hola,
He fet el commit [1]. Caldria fer algunes proves bàsiques de MySQL injection, per veure si el canvi que he fet [2] a la biblioteca de connexió a la bd pot suposar algun problema de seguretat.
Algú sap fer això?
Hola Pau,
No sóc cap expert en seguretat o PHP però sembla que la funció mysql_real_escape_string que usem protegeix en la majoria de casos. Sembla que hi ha casos que no per això[1].
Les dades les enviem a través d'un POST des d'una aplicació. Això té un nivell de visibilitat molt més baix que per exemple un formulari obert a una web web.
En el pitjor dels casos, el que podria passar és que modifiquessin les dades de la base de dades Catalanitzador. Aquesta base de dades només l'usem per analitzar dades. Si alteressin les dades no seria un drama. Entenc que tenim còpia de seguretat.
Jo el que recomanaria és si ningú té res més a dir pujar-ho a producció.
Atentament,
Jordi,
[1] http://stackoverflow.com/questions/5741187/sql- injection-that-gets-around-mysql-real-escape-string
-- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

El 26/09/2014 07:01, Pau Iranzo ha escrit:
Hola Jordi,
La pose'm aquesta nit en producció, d'acord? (la posaria ara, però he d'agafar el cotxe 9 hores i si passa alguna cosa no ho podré canviar)
Perfecte. Digues alguna cosa quan ho puguis. Atentament, Jordi, -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Hola Jordi, Ja he posat els canvis a producció! Salut, El dia 26 setembre de 2014 7:11, Jordi Mas <jmas@softcatala.org> ha escrit:
El 26/09/2014 07:01, Pau Iranzo ha escrit:
Hola Jordi,
La pose'm aquesta nit en producció, d'acord? (la posaria ara, però he d'agafar el cotxe 9 hores i si passa alguna cosa no ho podré canviar)
Perfecte. Digues alguna cosa quan ho puguis.
Atentament,
Jordi,
-- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

El 26/09/2014 20:45, Pau Iranzo ha escrit:
Hola Jordi,
Ja he posat els canvis a producció!
Pau, ja hi ha les primeres sessions amb els logs correctes. Sembla que va bé. moltes gràcies. Jordi, -- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org

Visca! El dia 27 setembre de 2014 8:10, Jordi Mas <jmas@softcatala.org> ha escrit:
El 26/09/2014 20:45, Pau Iranzo ha escrit:
Hola Jordi,
Ja he posat els canvis a producció!
Pau, ja hi ha les primeres sessions amb els logs correctes. Sembla que va bé. moltes gràcies.
Jordi,
-- Jordi Mas i Hernàndez -Bloc: http://gent.softcatala.org/jmas/bloc/ Planet Softcatalà -> http://planeta.softcatala.org
participants (2)
-
Jordi Mas
-
Pau Iranzo