OVH Cloud OVH Cloud

donnees avec des octets null a stocker dans Mysql

7 réponses
Avatar
cyrille
Bonjour,

La fonction openssl_seal() retourne un résultat qui peut contenir des octets de
valeur zéro. On ne peut donc pas traiter ce résultat comme une chaîne.

Je ne trouve pas comment connaitre la longueur de ce résulat,
et comment le stocker dans un champs de Mysql.

Auriez vous des idées sur le sujet ?
Merci
cyrille

7 réponses

Avatar
__marc.quinton__
cyrille wrote:

Auriez vous des idées sur le sujet ?


oui, php gere les variables chaines comme des packets, des containers,
mais pas comme des chaines facon C ; il est donc possible
de mettre n'importe quel caractere dans les variables de
type string.


il n'y a donc pas de probleme a se poser contrairement a ce
que tu laisses entendre.

voici une démonstration :

mq > cat string-null.php
<?php


# les chaines (strings) php gerent les chaines de facon binaires.

$len = 10;
$str1 = '';
$str2 = '';

for($i=0 ; $i<$len ; $i++){
$str1 .= "";
$str2 .= "helloworldnn";

}

echo "len str1 = " . strlen($str1) . "n";
echo "len str2 = " . strlen($str2) . "n";


?>

mq > php -q string-null.php
len str1 = 10
len str2 = 140
>

Avatar
cyrille
In article ,
says...
cyrille wrote:

Auriez vous des idées sur le sujet ?


oui, php gere les variables chaines comme des packets, des containers,
mais pas comme des chaines facon C ; il est donc possible
de mettre n'importe quel caractere dans les variables de
type string.

$str1 .= "";
$str2 .= "helloworldnn";


Merci !

Super pour la partie Php.
Maintenant, comment stocker ces chaînes dans Mysql ?
Car il doit y avoir du C là dessous ?

cyrille


Avatar
loufoque
cyrille a dit le 21/01/2005 16:41:

Maintenant, comment stocker ces chaînes dans Mysql ?


BLOB peut convenir.

Avatar
Paul Delannoy
cyrille a écrit:
In article ,
says...

cyrille wrote:


Auriez vous des idées sur le sujet ?


...



Merci !

Super pour la partie Php.
Maintenant, comment stocker ces chaînes dans Mysql ?
Car il doit y avoir du C là dessous ?


Pas forcèment. Juste un peu de bon sens ; question : MySql est il
capable de stocker tels quels les exemples fournis ?
Si réponse = oui, alors terminé Bon codage A bientôt
Sinon, faire une fonction encode($string) qui remplace les par
qqchose d'autre, et stocker ça.
Penser alors à faire la fionction inverse qui décode (;-))
J'eqça



Avatar
Marc

Super pour la partie Php.
Maintenant, comment stocker ces chaînes dans Mysql ?
Car il doit y avoir du C là dessous ?


il s'agit d'utiliser les procedures d'encodage adapté
a chaque bd. Souvent on trouve : mysql_encode(), ou
une fonction du genre.

essaie de trouver dans la doc un complément d'info.

Avatar
John Gallet
Bonjour,

Auriez vous des idées sur le sujet ?


Les filtrer(1). Ne pas les stocker. C'est la base d'une attaque de type
XSS qui pourrait faire des choses marrantes sous IE entre autres.

http://www.reseaux-telecoms.com/alerte_btree/04_12_24_184908_191/CSO/Alerte_view

De manière générale les null bytes qui traînent en plein milieu des
chaines de caractères sont révélateurs :
- ou d'un code de goret en C
- ou d'une attaque en cours

a++;
JG

(1) i.e. ne pas les inclure dans la liste des caractères autorisés.

Avatar
__marc.quinton__
John Gallet wrote:

Les filtrer(1). Ne pas les stocker. C'est la base d'une attaque de type
XSS qui pourrait faire des choses marrantes sous IE entre autres.


dans ce cas précis, il s'agit d'enregistrer en base de données
des informations binaire.

Je ne trouve pas comment connaitre la longueur de ce résulat,
et comment le stocker dans un champs de Mysql.



maintenant concernant la pertinance de cet objectif, c'est
a l'auteur de voir.

et j'ai repondu que les chaines php sont des container
supportant parfaitement tous les caracteres donc le .

il s'agit maintenant de savoir encoder la donnée binaire
afin de l'injecter via une requette SQL vers la base de
données.

j'ai vu qu'il existait une API spécialisée dans PgSql
permettant d'alimenter directement des 'blob' qui
sont des containers binaires (pg_lo*).