2010-05-05 5 views
2

J'écris un script PHP qui utilise des tableaux sérialisés pour stocker des données. Comment puis-je empêcher l'injection en sérialisation? Il serait très facile de nommer votre compte:Sérialisation d'un tableau en PHP, empêchant l'injection

something";s:6:"access";s:5:"admin"; 

pour un exemple simple. L'utilisateur peut alors ajouter le reste des paramètres nécessaires d'une manière ou d'une autre. Est-ce que addslashes fonctionnerait pour ça? Le php unserialize prend-il cela comme un personnage échappé? Si oui, est-il possible d'appliquer addslashes à un tableau entier sans itération à travers?

Merci pour l'aide!

+0

Du son de cela, je ne pense pas, juste pour être sûr: vous ne stockez pas cela dans un $ _COOKIE/$ _ POST/$ _ GET/$ _ DEMANDE, êtes-vous? – Reece45

+0

Pas moyen. va directement dans/hors de la base de données lol. – Cyclone

Répondre

3

La meilleure façon de savoir serait d'essayer sérialisation d'un tableau avec une chaîne qui a "dans ce

Quoi qu'il en soit: oui, sérialisation ne représente pour les guillemets doubles dans les données que vous stockez:

$ php -r "var_dump(unserialize(serialize(array('\"'))));" 
array(1) { 
    [0]=> 
    string(1) """ 
}