Page 1 sur 1

Aide sur la sécurité

Posté : 12 déc. 2007, 18:50
par Berthoud
Bonjour à tous,

je débute en php et sql et j'ai fait un petit module qui fonctionne correctement, même si j'ai dû mélanger html et php pour arriver à mes fins.

Cependant, je suis certain que ce module est une véritable passoire en matière de sécurité.

Par exemple, j'ai un formulaire qui permet le chargement d'images. J'ai testé que si je renommais un fichier php en jpg, il était bien téléchargé ... donc après, suffit de le renommer (je ne sais pas comment, mais ca doit se faire) et il pourra être exécuté et faire les dégat qu'on veut.

Le problème, c'est que je ne maitrise pas assez PHP pour imaginer le mal qui peut être fait .

Bien sur, je ne demande pas qu'on refasse mon code à ma place, mais qu'on regarde les principales failles, qu'on m'explique comment on peut utiliser les utiliser et comment y remédier. Après, à moi d'appliquer la (les) leçons.

Aussi, avant de l'installer sur mon site, je voulais faire appel à vous. Y aurait-il quelqu'un d'un peu disponible à qui je pourrais envoyer mon code et qui me donnerait quelques conseils pour le sécuriser.

Merci d'avance

Bonne journée à tous

Posté : 12 déc. 2007, 18:53
par zeus
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Méthodologie, modélisation, sécurité".

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.

Posté : 12 déc. 2007, 19:03
par AB
Pour être sûr que le fichier est une image tu peux faire un getimagesize() sur le fichier.
Si la fonction te renvoies des dimensions, c'est que le fichier est une image (donc pas de pb de sécurité)

Posté : 12 déc. 2007, 21:02
par Calimero
Pour les conseils, un bon point de départ (beaucoup de lecture en perspective :!: ) http://www.phpsecure.info/v2/zone/pArticle

Posté : 13 déc. 2007, 09:14
par Berthoud
Pour être sûr que le fichier est une image tu peux faire un getimagesize() sur le fichier.
Si la fonction te renvoies des dimensions, c'est que le fichier est une image (donc pas de pb de sécurité)
Merci,

je vais regarder dans cette direction ... mais question bête de néophite ... est-ce que la pseudo image n'est pas déjà téléchargée quand le tets est effectué? Donc ce serait déjà trop tard?

Posté : 13 déc. 2007, 11:57
par mere-teresa
L'image est téléchargée, mais elle est mise dans /tmp, ensuite, qand tu dis move_uploaded_files() tu choisis le répertoire où tu veux mettre l'image.
L'image temporaire est supprimé à la fin du script PHP.

Posté : 13 déc. 2007, 18:52
par Volkow
Je veux bien essayer de voir ton code, tu n'as qu'à me l'envoyer par MP, j'y jetterais un œil.

:)

Posté : 14 déc. 2007, 19:02
par Berthoud
Un énorme merci

C'est fait

:)

Posté : 31 déc. 2007, 12:15
par Berthoud
Bonjour et mes meilleurs voeux à tous.

Pour continuer dans mes tentatives de sécurisation de mon code, j'ai deux questions à poser :

- comment vérifier qu'une page (php ou autre) a bien été appelée à partir d'une url définie?
- est-il possible, à partir d'une page html contenant éventuellement un script, de renommer un fichier sur un serveur, la page se trouvant elle aussi sur le même serveur.

Merci par avance de votre aide

Bien cordialement

Philippe

Posté : 31 déc. 2007, 12:21
par momox
Bonjour et mes meilleurs voeux à tous.

Pour continuer dans mes tentatives de sécurisation de mon code, j'ai deux questions à poser :

- comment vérifier qu'une page (php ou autre) a bien été appelée à partir d'une url définie?
- est-il possible, à partir d'une page html contenant éventuellement un script, de renommer un fichier sur un serveur, la page se trouvant elle aussi sur le même serveur.

Merci par avance de votre aide

Bien cordialement

Philippe
Il y a les referrer pour vérifier la provenance, mais qui peuvent être falsifiés.
Pour renommer un fichier sur le serveur a partir d'un page html, je te réponds non, a moins d'utiliser un script javascript qui va appeller un fichier php qui lui renommera le fichier.
@++ ;)

Posté : 31 déc. 2007, 12:24
par Sékiltoyai
- comment vérifier qu'une page (php ou autre) a bien été appelée à partir d'une url définie?
Fais un fichier contenant <?php echo phpinfo(); ?> qui te donnera la liste des variables $_SERVER que tu peux utiliser pour vérifier ceci.
- est-il possible, à partir d'une page html contenant éventuellement un script, de renommer un fichier sur un serveur, la page se trouvant elle aussi sur le même serveur.
Par php, c'est possible avec la fonction rename().

Mais par contre, je ne vois pas forcément les intérêts pour la sécurisation, avais-tu une idée en tête ?
Par exemple, pourquoi est-ce important pour toi de savoir si un script a été appelé avec une certaine url ?

Posté : 31 déc. 2007, 13:31
par mere-teresa
Modération :
Berthoud, si tu as une autre question ouvre un nouveau sujet,
cela te permettra d'avoir plus de réponses.

En plus, tu pourras mettre [Résolu] dès que ton problème évoqué ici sera réglé.

Merci de prendre le temps de lire les règlements.

Posté : 31 déc. 2007, 13:50
par Berthoud
Merci de votre intéret.

j'ai une page "formulaire" qui appelle une page "traitement". Je veux être certain que la page "traitement" du site a bien été appelée par la page "formulaire" du même site et non par une autre. En effet, je me suis aperçu qu'à partir du "formulaire" sur mon ordi en local (et donc que je pouvais modifier), je pouvais appeler la page "traitement" de mon site et ainsi passer éventuellement outre certaines sécurités qui sont traitées par la page "formulaire".

Mon script permet de charger des images et ou des pages html. Je voudrais être certain qu'on ne puisse pas (facilement) redonner son extension php (donc le rendre exécutable) à un fichier ayant réussi à être téléchargé malgré mes sécurités.

Posté : 31 déc. 2007, 14:36
par Sékiltoyai
passer éventuellement outre certaines sécurités qui sont traitées par la page "formulaire".
Les seules sécurités que tu puisses prendre en compte sont les sécurités prises sur ta page, si tu as fait des vérifications sur la page de ton formulaire, tu dois soit les enregistrer (session, bdd), soit les refaire.
Il y aurait éventuellement des techniques pour t'assurer que l'utilisateur est bien passé par ton formulaire, mais je préfère te conseiller de revoir ta sécurité plutôt que de te proposer un erzast de solution…
Mon script permet de charger des images et ou des pages html. Je voudrais être certain qu'on ne puisse pas (facilement) redonner son extension php (donc le rendre exécutable) à un fichier ayant réussi à être téléchargé malgré mes sécurités.
Tout ce qui est sur ton serveur est contrôlé par toi, c'est à toi d'exclure les extensions php, mais une fois chargé sur ton serveur, l'utilisateur n'a plus de raison d'avoir aucun contrôle sur les fichiers qu'il a uploadé (sauf faille de sécurité chez ton hébergeur ou sur ton site…)