[Ubuntu-cat] Fwd: Re: Dubte servidor

Miki mikcat a gmail.com
dim abr 18 14:56:12 UTC 2017


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/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/06cee48a/attachment-0001.html>


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