[Ubuntu-cat] Fwd: Re: Dubte servidor
Joan Inglada Roig
joan.inglada a gmail.com
diu abr 16 10:30:57 UTC 2017
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($enlace
, $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?llen
>>>>>>> gua=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/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
>>
>>
>
-------------- part següent --------------
Un document HTML ha estat eliminat...
URL: <https://lists.ubuntu.com/archives/ubuntu-cat/attachments/20170416/fc23b97f/attachment-0001.html>
Més informació sobre la llista de correu Ubuntu-cat