[Ubuntu-cat] Fwd: Re: Dubte servidor

Joan Inglada Roig joan.inglada a gmail.com
dim abr 18 18:33:30 UTC 2017


Gràcies, modifico el tipus a text.

El dia 18 d’abril de 2017 a les 16:56, Miki <mikcat a gmail.com> ha escrit:

> No farà mal no, però si és text millor definir el camp com text o
> longtext, el tipus blobs és més per desar fitxers (p.e. imatges) dins la
> bbdd i el funcionament al llegir/escriure dades binaries és una mica
> especial:
>
> https://blogs.oracle.com/oswald/entry/php_s_mysqli_extension_storing
>
>
>
> El dia 18 d’abril de 2017 a les 16:26, Joan Inglada Roig <
> joan.inglada a gmail.com> ha escrit:
>
>> Gràcies, Miki,
>>
>> De fet quan vaig afegir el mysqli_real_escape_string,la contrabarra es
>> converteix en 7 contrabarres.
>> Pel que fa a la tira ja vaig veure després de què anava. Gràcies.
>> Em miraré això dels "filter_sanitize" i també miraré d'esbrinar com fer
>> "logs" dels missatges i la manera d'assabentar-me que s'ha produit.
>>
>>  Una altra qüestió que et volia comentar és la següent:
>>
>> A l'intentar introduir un text de comentaris a una columna tipus blob,
>> que en la codificació anti-injecció-sql (mysqli_stmt_bind_param) té una
>> "b", no registra el text.
>>
>> El codi és:
>>
>> ($sentencia = $conn->prepare("INSERT INTO taula (nom, direccio, ciutat, coments) values (?,?,?,?)"));
>>
>> $sentencia->bind_param("sssb", $nom, $direccio, $ciutat, $coments);
>>
>> $sentencia->execute();
>>
>> He canviat la codificació de "b" a "s" i ara grava el text, ¿he fet bé ?.
>>
>> Salutacions, Joan
>>
>> El dia 18 d’abril de 2017 a les 16:03, Miki <mikcat a gmail.com> ha escrit:
>>
>>> Hola Joan,
>>>
>>> Fent servir els prepared statements + bind_param ja estàs protegit
>>> contra els sql injection i ja no et cal fer el mysqli_real_escape_string ja
>>> que sinó ho estàs escapant 2 cops.
>>>
>>> lo del xkcd és una tira cómica sobre el tema hehehe
>>>
>>> A part de lo anterior, si també vols netejar / validar les dades ho pots
>>> fer via filter_input (de fet es recomana en comptes de llegir directament
>>> del $_POST, get, env, etc, quan saps el tipus de dades que esperes)
>>>
>>> per exemple un camp email:
>>> $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
>>>
>>> FILTER_SANITIZE_EMAIL     "email"           Remove all characters except
>>> letters, digits and !#$%&'*+-=?^_`{|}~@.[].
>>>
>>> Per camps de text: FILTER_SANITIZE_STRING, etc...
>>>
>>> http://php.net/manual/en/function.filter-input.php
>>> http://php.net/manual/en/filter.filters.sanitize.php
>>>
>>> També validar-los:
>>> http://php.net/manual/en/filter.filters.validate.php
>>>
>>> etc
>>>
>>>
>>> Salut !
>>> Miki
>>>
>>> El dia 16 d’abril de 2017 a les 12:30, Joan Inglada Roig <
>>> joan.inglada a gmail.com> ha escrit:
>>>
>>>> Hola, Miki i a qui més interessi: Ara, prèviament a la preparació i
>>>> parametrització, he fet els "escapaments" segons diu a
>>>> http://php.net/manual/es/mysqli.real-escape-string.php i la diferència
>>>> és que el camp "nom" ara conté «unnom\\\'); DROP TABLE inscrits;--».
>>>>
>>>> O sigui, que la funció "escapament" $nom = mysqli_real_escape_string($e
>>>> nlace, $nom); ha posat 3 contrabarres (\\\) on abans n'hi havia una.
>>>>
>>>> Salut,
>>>> Joan
>>>>
>>>>
>>>> El dia 16 d’abril de 2017 a les 0:20, Joan Inglada Roig <
>>>> joan.inglada a gmail.com> ha escrit:
>>>>
>>>>> Hola, Miki, pel que fa a la injecció sql en php, ja he convertit les
>>>>> sentències sql segons el sistema de preparació i parametrització que em vas
>>>>> indicar.
>>>>>
>>>>> He fet una prova posant exactament *«*unnom\'); DROP TABLE
>>>>> inscrits;--» a la casella del nom i així mateix ha anat a parar a la taula
>>>>> -> «*nom:* unnom\'); DROP TABLE inscrits;--» i no ha sortit cap
>>>>> missatge a la pantalla. He fet una altra prova posant un nom real d'una
>>>>> taula i ha aparegut tal qual en el camp corresponent.
>>>>>
>>>>> Seguiré estudiant el tema de la sanació / escapament de caràcters i
>>>>> entitats html i informaré dels progressos.
>>>>>
>>>>> Salut,
>>>>> Joan
>>>>>
>>>>> El dia 12 d’abril de 2017 a les 14:03, Miki <mikcat a gmail.com> ha
>>>>> escrit:
>>>>>
>>>>>> De res, però jo només t'he posat un exemple d'un cas concret, primer
>>>>>> descobreixen que tens un sistema vulnerable per exemple provant inputs fins
>>>>>> a provocar un error, i després es dediquen a provar coses, anar recabant
>>>>>> info, etc.
>>>>>>
>>>>>> Per exemple, pintar l'error mysql per pantalla tampoc és bona
>>>>>> pràctica en una web en producció, és millor fer un error_log i per pantalla
>>>>>> només treure un missatge genèric.
>>>>>>
>>>>>> En aquest cas potser l'error seria, "no existeix la taula inscrits",
>>>>>> i l'atacant ja sap que és un sistema vulnerable.
>>>>>>
>>>>>> El dia 12 d’abril de 2017 a les 13:52, Joan Inglada Roig <
>>>>>> joan.inglada a gmail.com> ha escrit:
>>>>>>
>>>>>>> Gràcies, Miki!
>>>>>>>
>>>>>>> Com he dit abans la taula no té el nom que jo he posat.
>>>>>>>
>>>>>>> De tota manera agraeixo els teus missatges i intentaré "sanititzar"
>>>>>>> el codi.
>>>>>>>
>>>>>>> El dia 12 d’abril de 2017 a les 13:45, Miki <mikcat a gmail.com> ha
>>>>>>> escrit:
>>>>>>>
>>>>>>>> $nom = $_POST['nom'];
>>>>>>>>
>>>>>>>>   $query = "INSERT INTO inscrits (nomCognoms, ...) values
>>>>>>>>                                   ('$nom',...)";
>>>>>>>>
>>>>>>>> $nom és tal qual lo que t'envien del formulari, i si t'envien:
>>>>>>>>
>>>>>>>> unnom'); DROP TABLE inscrits;--
>>>>>>>>
>>>>>>>> la query anterior queda com:
>>>>>>>>
>>>>>>>> INSERT INTO inscrits (nomCognoms, ...) values
>>>>>>>>                                   ('unnom'); DROP TABLE
>>>>>>>> inscrits;--',...)
>>>>>>>>
>>>>>>>> https://xkcd.com/327/
>>>>>>>>
>>>>>>>> Això és un exemple clàssic, mai pots confiar en l'input de l'usuari
>>>>>>>>
>>>>>>>> per evitar-ho, com diuen a la resposta d'stackoverflow
>>>>>>>>
>>>>>>>> $stmt = $dbConnection->prepare('NSERT INTO inscrits (nomCognoms,
>>>>>>>> ....) values (?, ...)');
>>>>>>>> $stmt->bind_param('s', $nom);
>>>>>>>>
>>>>>>>> $stmt->execute();
>>>>>>>>
>>>>>>>> sanititzar vol dir escapar/treure tots els caràcters reservats "que
>>>>>>>> poden fer mal" al lloc on faràs servir aquell valor
>>>>>>>> per exemple per sql les comilles simples ' s'escaparien \'  i el
>>>>>>>> input anterior ja no et faria mal.
>>>>>>>> per html els tags <script> es convertirien a entities
>>>>>>>> <script> el que evita que et colin javascript maliciós quan pintes
>>>>>>>> aquell camp directament per pantalla
>>>>>>>> etc, etc, etc
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> El dia 12 d’abril de 2017 a les 13:18, Joan Inglada Roig <
>>>>>>>> joan.inglada a gmail.com> ha escrit:
>>>>>>>>
>>>>>>>>> Bé, Miki, gràcies, però m'ho he pensat abans de posar-ho. No hi ha
>>>>>>>>> cap nom real. La url és pública. On és el perill? Què vol dir "sanititzis
>>>>>>>>> els params"?
>>>>>>>>>
>>>>>>>>> El dia 12 d’abril de 2017 a les 11:56, Miki <mikcat a gmail.com> ha
>>>>>>>>> escrit:
>>>>>>>>>
>>>>>>>>>> bufff....  mai hauries de fer això, i si és codi real, encara
>>>>>>>>>> menys publicar-ho en una llista de correu pública amb la url.
>>>>>>>>>>
>>>>>>>>>> Et recomano fer un cop d'ull a
>>>>>>>>>> http://stackoverflow.com/questions/60174/how-can-i-prevent-s
>>>>>>>>>> ql-injection-in-php
>>>>>>>>>>
>>>>>>>>>> I que sanititzis els params tan aviat com puguis
>>>>>>>>>>
>>>>>>>>>> No sé si algun administrador de la llista pot esborrar aquests 2
>>>>>>>>>> missatges... o com a mínim amagar-los
>>>>>>>>>>
>>>>>>>>>> El dia 12 d’abril de 2017 a les 10:41, Joan Inglada Roig <
>>>>>>>>>> joan.inglada a gmail.com> ha escrit:
>>>>>>>>>>
>>>>>>>>>>> Aquí tens un esquema del que es fa per a obtenir les
>>>>>>>>>>> inscripcions:
>>>>>>>>>>>
>>>>>>>>>>> En el inscripcions.php hi ha això:
>>>>>>>>>>>
>>>>>>>>>>>  <form id="formu" name="formu" method="post" action="anotacions.php" onReset="controlaCaselles();">
>>>>>>>>>>>
>>>>>>>>>>> ...
>>>>>>>>>>>
>>>>>>>>>>> <tr><td width="191">Nom i cognoms:</td><td colspan="3"><input name="nom" id="nom" size="40" type="text" /></td></tr>
>>>>>>>>>>>
>>>>>>>>>>> ...  i així tots els camps del formulari. Al final hi ha un
>>>>>>>>>>> control antirobots i el tancament:
>>>>>>>>>>>
>>>>>>>>>>> <tr><td colspan="5"><input name="envia" id="envia" value="Envia" onClick="return validaHo();" type="button" /><input name="neteja" id="neteja" value="Neteja" type="reset" /></td></tr>
>>>>>>>>>>>
>>>>>>>>>>> En anotacions.php hi ha:
>>>>>>>>>>>
>>>>>>>>>>> // Connexió a la base de dades
>>>>>>>>>>>
>>>>>>>>>>> $link = mysql_connect('localhost', 'usuari', 'contrasenya')
>>>>>>>>>>>        or die('Error de connexió: ' . mysql_error());
>>>>>>>>>>>     mysql_select_db('basededades') or die('base de dades
>>>>>>>>>>> inaccessible');
>>>>>>>>>>>
>>>>>>>>>>> // Prenem les dades que ens arriben per post
>>>>>>>>>>>
>>>>>>>>>>>      $nom = $_POST['nom'];
>>>>>>>>>>>
>>>>>>>>>>> ... i així tots els camps del formulari
>>>>>>>>>>>
>>>>>>>>>>> echo "<tr><td>Nomo / Nom</td><td>$nom</td></tr>";
>>>>>>>>>>>
>>>>>>>>>>> ... i així tots els camps del formulari
>>>>>>>>>>>
>>>>>>>>>>> // Sentència SQL a executar
>>>>>>>>>>>
>>>>>>>>>>>     $query = "INSERT INTO inscrits (nomCognoms, ...) values
>>>>>>>>>>>                                   ('$nom',...)";
>>>>>>>>>>>      $rs = mysql_query($query,$link) or die($error.'[S\'ha
>>>>>>>>>>> produït un error quan s\'intentava donar d\'alta la nova inscripció]' .
>>>>>>>>>>> mysql_error($link));
>>>>>>>>>>>
>>>>>>>>>>> <p>Enhorabona! Us heu inscrit correctament</p>
>>>>>>>>>>>
>>>>>>>>>>> <p><a href="http://www.esperanto.cat
>>>>>>>>>>> /kongresoj/2017/index.php?llengua=1">Clica aquí per tornar a la
>>>>>>>>>>> pàgina principal</a></p>
>>>>>>>>>>>
>>>>>>>>>>> <p>Imprimiu la inscripció amb Ctrl P</p>
>>>>>>>>>>>
>>>>>>>>>>> ------------------------------------------------------------
>>>>>>>>>>> ------------------------------------
>>>>>>>>>>>
>>>>>>>>>>> Això és tot:
>>>>>>>>>>>
>>>>>>>>>>> El que jo preguntava és si coneixeu la manera de crear
>>>>>>>>>>> automàticament un pdf que s'enviés també automàticament a l'adreça de
>>>>>>>>>>> correl que està en un dels camps del formulari?
>>>>>>>>>>>
>>>>>>>>>>> Salut!
>>>>>>>>>>> Joan
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> El dia 11 d’abril de 2017 a les 16:28, Joan Carles <
>>>>>>>>>>> palimsesto a gmail.com> ha escrit:
>>>>>>>>>>>
>>>>>>>>>>>> El 11/04/17 a les 15:08, Joan Inglada Roig ha escrit:
>>>>>>>>>>>>
>>>>>>>>>>>> Bones! No sé si podré ajudar gaire, però segurament que podré
>>>>>>>>>>>> aprendre alguna cosa.
>>>>>>>>>>>>
>>>>>>>>>>>> Preàmbul: Sóc membre de l'Associació Catalana d'Esperanto i
>>>>>>>>>>>> visc a Agulló-Àger, al peu del Montsec, on hi ha un Parc Astronòmic. La
>>>>>>>>>>>> ciutat més esperantista de Catalunya ha estat històricament Sabadell i
>>>>>>>>>>>> alguns dels esperantistes sabadellencs són socis gairebé fundadors de
>>>>>>>>>>>> l'Agrupació Astronòmica de Sabadell i des que es va inaugurar el Centre
>>>>>>>>>>>> d'Observació de l'Univers que estan proposant que el congrés bianual dels
>>>>>>>>>>>> esperantistes catalans es faci a Àger.
>>>>>>>>>>>>
>>>>>>>>>>>> Enguany ha tocat i jo que sóc un vell (una mica ->) informàtic
>>>>>>>>>>>> -des del 1969- he estat encarregat de les pàgines del congrés
>>>>>>>>>>>> <http://www.esperanto.cat/kongresoj/2017> i tot està muntat en
>>>>>>>>>>>> sistema php i mysql. El que no sabia ho he preguntat a fòrums i la cosa
>>>>>>>>>>>> rutlla.
>>>>>>>>>>>>
>>>>>>>>>>>> El que jo he fet és que un cop la gent omple la inscripció al
>>>>>>>>>>>> congrés, que es guarda en una taula sql, faig aparèixer un resum a la
>>>>>>>>>>>> pantalla amb la nota de que s'ho guardin amb Ctrl P i al llegir això del
>>>>>>>>>>>> formulari he pensat que seria interessant trobar la manera de guardar la
>>>>>>>>>>>> inscripció en document pdf i enviar-lo a l'adreça electrònica del inscrit.
>>>>>>>>>>>>
>>>>>>>>>>>> Si m'estic posant on no em demanen m'ho dieu i plego!
>>>>>>>>>>>>
>>>>>>>>>>>> Salut,
>>>>>>>>>>>> Joan
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Hola!
>>>>>>>>>>>> Penso que aquí tothom pot dir la seva i els que no sabem,
>>>>>>>>>>>> aprendrem.
>>>>>>>>>>>> No se si t'agafe del tot, però potser dius que...."poses un
>>>>>>>>>>>> codi amb la notació de Ctrl P, es guarda en pdf i es poguera rebre a casa",
>>>>>>>>>>>> llavors s'ha generat un document pdf amb les dades omplertes al formulari,
>>>>>>>>>>>> no? i que apareix al lloc on s'han dirigit del servidor. Correcte?
>>>>>>>>>>>>
>>>>>>>>>>>> D'entrada, jo no se crear el codi que dius en php però que
>>>>>>>>>>>> aparega el que dius, tan de bo ho sabera; i bo mostrar-les d'altra forma sí
>>>>>>>>>>>> ho veig interessant...però tinc limitacions.
>>>>>>>>>>>> Fins on vols anar a parar?...doncs a la creació d'un nou format
>>>>>>>>>>>> si et segueixo, però mès no acabo d'albirar-ho.
>>>>>>>>>>>>
>>>>>>>>>>>> Potser, és un pèl més del que demanava jo, que es circunscrivia
>>>>>>>>>>>> només a llegir les dades del formulari al servidor creat, però que si es
>>>>>>>>>>>> pot fer de manera fàcil sóc tot oïdes.
>>>>>>>>>>>>
>>>>>>>>>>>> Mentre estic tractant de d'instal.lar "bootstrap" i s'instal.la,
>>>>>>>>>>>> segon sembla,però després no puc veure on és per engegar-lo i veure les
>>>>>>>>>>>> plantilles, però també és altre tema i no anem a barrejar.
>>>>>>>>>>>>
>>>>>>>>>>>> Gràcies per afegir noves possibilitats, però tenen limitacions
>>>>>>>>>>>> per mi ara per ara.
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Salutacions,
>>>>>>>>>>>>
>>>>>>>>>>>> Joan Carles
>>>>>>>>>>>> Usuari GNU/Linux #324197#http://counter.li.org/
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Ubuntu-cat mailing list
>>>>>>>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>>>>>>>> Modify settings or unsubscribe at:
>>>>>>>>>>>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-cat
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Ubuntu-cat mailing list
>>>>>>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>>>>>>> Modify settings or unsubscribe at:
>>>>>>>>>>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-cat
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Ubuntu-cat mailing list
>>>>>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>>>>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>>>>>>>>> an/listinfo/ubuntu-cat
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Ubuntu-cat mailing list
>>>>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>>>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>>>>>>>> an/listinfo/ubuntu-cat
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Ubuntu-cat mailing list
>>>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>>>>>>> an/listinfo/ubuntu-cat
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Ubuntu-cat mailing list
>>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>>>>>> an/listinfo/ubuntu-cat
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Ubuntu-cat mailing list
>>>>>> Ubuntu-cat a lists.ubuntu.com
>>>>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>>>>> an/listinfo/ubuntu-cat
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Ubuntu-cat mailing list
>>>> Ubuntu-cat a lists.ubuntu.com
>>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>>> an/listinfo/ubuntu-cat
>>>>
>>>>
>>>
>>> --
>>> Ubuntu-cat mailing list
>>> Ubuntu-cat a lists.ubuntu.com
>>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>>> an/listinfo/ubuntu-cat
>>>
>>>
>>
>> --
>> Ubuntu-cat mailing list
>> Ubuntu-cat a lists.ubuntu.com
>> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailm
>> an/listinfo/ubuntu-cat
>>
>>
>
> --
> Ubuntu-cat mailing list
> Ubuntu-cat a lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/
> mailman/listinfo/ubuntu-cat
>
>
-------------- part següent --------------
Un document HTML ha estat eliminat...
URL: <https://lists.ubuntu.com/archives/ubuntu-cat/attachments/20170418/9db17d66/attachment-0001.html>


Més informació sobre la llista de correu Ubuntu-cat