Aller au contenu

Securité de notre site php


sospc06

Sujets conseillés

Je suis un programme php qui va gerer des clients.

Je voudrais pouvoir logger un client et surtout securiser a fond le site.

Pour cela je compte installer des htaccess sur le site pour interdire la connection pour tout le monde. Seul les personne avec le pass pourrons entrer. Puis une fois qu'il on passé cette etape, il devrai donc y avoir seulement de mes clients, je voudrais utiliser les sessions de php pour logger un de mes clients a son compte. Le mot de passe sera bien sur crypter dans la base (en quoi je ne sais pas encore, MD5 ?).

Je n'ai pas trop de restriction de performance, je compte utiliser le ssl en permanence.

Qu'en pensez vous ? Il existerais des failles ? Un client "pirate" pourrais remonter sur la base ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Pour cela je compte installer des htaccess sur le site pour interdire la connection pour tout le monde.  Seul les personne avec le pass pourrons entrer.

<{POST_SNAPBACK}>

C'est un bon depart.

Puis une fois qu'il on passé cette etape, il devrai donc y avoir seulement de mes clients, je voudrais utiliser les sessions de php pour logger un de mes clients a son compte.

<{POST_SNAPBACK}>

Pourquoi fait ? La session ne sert que si tu veux conserver un contexte d'une page a une autre. Si tu ne souhaites que logger l'activite de ton client, pas besoin d'une session vu que tu aura l'info dans les entete HTTP de chacune de ses requettes. C'est largement suffisant.

La seule chose que je peux te conseiller en plus, c'est d'utiliser au minimum une methode d'authentification DIGEST histoire que les mots de passe ne passent pas en claire sur le reseau. L'ideal etant de tout passer en https.

Maintenant, base de donnee ou non, ca n'apportera rien niveau securite, un .htpasswd est aussi secure.

Pour le reste, ca depend principalement de la qualite de ton code.

Lolo

Lien vers le commentaire
Partager sur d’autres sites

je veux faire des sessions car un client aura un compte, des informations le concernant, une messagerie ...

Un client doit donc se logger pour acceder a son espace personnel et pas a celui des autres. Tu vois ?

Je compte utiliser effectivement uniquement le https mais comment interdire a un client de se logger via la meme page en http ?

pour la base de donné je suis obligé, c'est la base de mon programme dailleur (jai 20 tables). Le programme fait beaucoup de chose.

Pour la qualité de mon code, j'ai des formulaire et je recupere les variables avec des $POST. Aucune variable ne passe dans la ligne d'adresse. Tu pense que ca va ?

Merci pour tes reponses destroyedlolo

Lien vers le commentaire
Partager sur d’autres sites

je veux faire des sessions car un client aura un compte, des informations le concernant,  une messagerie ...

Un client doit donc se logger pour acceder a son espace personnel et pas a celui des autres. Tu vois ?

Oui, mais a nouveau, une session est peut etre superflue pour ca etant donne que tu recupereras dans toutes tes entetes HTTP son ID.

Les sessions sont [u[vraiment utile si tu dois faire passer des informations dynamiques d'une page a l'autre. S'il ne sagit que de selectionner son compte, son email ou ce genre de trucs qui restent "constantes" tout au long de sa visite, ca peut aussi se faire grace a son ID.

Session ou pas session, mon choix se fait generalement :

- en fonction du nombres de parametres a recuperer a chaque page (c'est evident que s'il y en a des palenquees, les sessions deviennent vite inevitables),

- de la techno utilisee,

- du genre de visiteurs que tu as. Avec ceux qui sont parano et qui n'acceptent pas les cookis par exemple, ca peut vite devenir galere

Je compte utiliser effectivement uniquement le https mais comment interdire a un client de se logger via la meme page en http ?

Soit, tu supprimes le port 80 (voir fichier httpd.conf), soit tu utilises la directive qui va bien comme explique sur ma page.

pour la base de donné je suis obligé, c'est la base de mon programme dailleur (jai 20 tables). Le programme fait beaucoup de chose.

Perso, je bosse principalement sur des machines tres peu puissantes (et tres vielles) donc je dois optimiser a font (donc limiter les acces BD inutiles) ainsi que l'utilisation a outrance de la memoire partagee. Bref, la BD me sert lorsqu'il y a reelement des donnees dynamiques a recuperer (genre des stats), mais pas pour recuperer des donnees statics ou des parametres.

Mais bon, c'est vrais que j'aime les cas extremes :fou: Les gens sont toujours etonnes de la rapidite de mes sites lorsqu'ils voyent sur quoi ils tournent ... que ce soit mon site perso ou au taf :rolleyes:

Mais bon, c'est juste pour la petite histoire.

Pour la qualité de mon code, j'ai des formulaire et je recupere les variables avec des $POST. Aucune variable ne passe dans la ligne d'adresse. Tu pense que ca va ?

C'est un bon depart, mais il faut aussi :

* surtout que tu valides systematiquement toutes les valeurs que tu ressoies, en particulier s'il s'agit de texte libre. Virer tout ce qui est HTML par exemple.

* En suite, il faut supprimer le register_globals et si ce n'est pas possible INITIALISEE systematiquement toutes les variables temporaires.

* Enfin, tes parametres ne doivent en aucun cas contenir la valeur d'un include ou d'un requiere.

Ca c'est vraiment le B.A-BA. Pour le reste, ca depend vraiment de l'applie.

Merci pour tes reponses destroyedlolo

<{POST_SNAPBACK}>

You're welcome :)

Lolo (d'ailleurs, ca me fait penser qu'il y aurrait des trucs a revoir sur mon site ^_^ )

Lien vers le commentaire
Partager sur d’autres sites

Les sessions sont [u[vraiment uti
le si tu dois faire passer des informations dynamiques d'une page a l'autre. S'il ne sagit que de selectionner son compte, son email ou ce genre de trucs qui restent "constantes" tout au long de sa visite, ca peut aussi se faire grace a son ID.

Comment faire alors ?

Soit, tu supprimes le port 80 (voir fichier httpd.conf),

je le supprime sur le serveur ? il me faut les acces root au serveur alors ?

surtout que tu valides systematiquement toutes les valeurs que tu ressoies, en particulier s'il s'agit de texte libre. Virer tout ce qui est HTML par exemple.

Avec htmlspecialchars() et addslashes() ?

Enfin, tes parametres ne doivent en aucun cas contenir la valeur d'un include ou d'un requiere.

j'ai des include mais est ce que mes parametres en contienne, je ne sais pas, ca veux dire quoi

Merci encore pour ton aide, tu m'a aider a eclaircir bon nombre de probleme destroyedlolo

Lien vers le commentaire
Partager sur d’autres sites

je le supprime sur le serveur ? il me faut les acces root au serveur alors ?

Ca depend de comment est configurer ton hebergement.

S'il est bien fait, tu modifies le httpd.conf pour virer le Listen 80 et du devrait avoir un Sudo des famille pour redemarrer Apache. Sinon, la solution qui se trouve dans la page que j'indique plus haut fonctionnera sans que tu es besoin de redemarrer le serveur ni d'avoir access a Root.

j'ai des include mais est ce que mes parametres en contienne, je ne sais pas, ca veux dire quoi

Ben, en clair et en decode, tu ne dois pas avoir des lignes du genre

include($_POST['ma_page']);

Modifié par destroyedlolo
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...