Protections en php contre les hackers...

Protections en php contre les hackers... - PHP - Programmation

Marsh Posté le 22-01-2003 à 12:15:24    

Je vais me mettre à l'accès à un base de donné MySql par l'intermédiaire du language PHP. Seulement j'ai entendu qu'il était très facile de trouver le mot de passe et le login de MySql quand il est exécuté par php.  
 
Ma question est donc : Comment je dois procéder pour me protéger ?

Reply

Marsh Posté le 22-01-2003 à 12:15:24   

Reply

Marsh Posté le 22-01-2003 à 12:28:35    

t'as essayé de mettre un préservatif sur le serveur ?

Reply

Marsh Posté le 22-01-2003 à 12:32:30    

En fait, il paraît que comme je dois me connecter à partire de PHP à MySql (donc je met mon login et mon mot de passe sur la page PHP), il est possible de voir mon login et mon mot de passe....

Reply

Marsh Posté le 22-01-2003 à 12:53:37    

La connection php-mysql necessite habituellement un seul login/pass qui est stocké sur le serveur apache. Donc ce login/pass ne passera pas sur le reso. Generalement, cest configuré pr que le serverur sql naccepte des connections que de certaines machines (celle ou est lapache par exemple)
 
si tu parles de login/password de visiteurs, oui cest possible de les voir si tu analyses tt ce passe sur ta ligne reso. Avant de te précoccuper de ca, tu as quelques autres trucs a te preoccuper dans tes pages php.

Reply

Marsh Posté le 22-01-2003 à 13:26:08    

beleg a écrit :

...Avant de te précoccuper de ca, tu as quelques autres trucs a te preoccuper dans tes pages php.
 

euh quoi ???

Reply

Marsh Posté le 22-01-2003 à 13:27:31    

Davjack a écrit :

euh quoi ???


 
Ne pas mettre les copies de sauvegarde de fichier PHP sur le serveur par exemple (contient du vécu)


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 22-01-2003 à 13:41:51    

Y a-t'il un site qui parle des mannière de bien protéger ses scripts ?

Reply

Marsh Posté le 22-01-2003 à 13:46:13    

oui ce forum ... recherche "securité"  :sarcastic:

Reply

Marsh Posté le 22-01-2003 à 13:58:31    

beleg a écrit :

La connection php-mysql necessite habituellement un seul login/pass qui est stocké sur le serveur apache. Donc ce login/pass ne passera pas sur le reso. Generalement, cest configuré pr que le serverur sql naccepte des connections que de certaines machines (celle ou est lapache par exemple)
 
si tu parles de login/password de visiteurs, oui cest possible de les voir si tu analyses tt ce passe sur ta ligne reso. Avant de te précoccuper de ca, tu as quelques autres trucs a te preoccuper dans tes pages php.
 


 :jap:  [:totozzz]

Reply

Marsh Posté le 22-01-2003 à 15:17:46    

y'a certains outils qui font des sauvegarde de fichiers, et ca peut etre genant si tu les uploads sur le serveur, par exemple :
Editplus sauvegarde mes fichiers PHP en rajoutant l'extention .bak, Beaucoup de serveur web n'interpretront pas le php d'un fichier .bak et affichera donc son contenu. ca peut provoquer des surprises :
 
http://www.google.fr/search?source [...] php3%2Ebak
 
 
 

Reply

Marsh Posté le 22-01-2003 à 15:17:46   

Reply

Marsh Posté le 22-01-2003 à 15:22:34    

Reply

Marsh Posté le 22-01-2003 à 16:58:31    

Et la commande "mysql_connect" présente-t'elle une faille ? Je dois faire comment pour que personne ne puisse voir le login et le mot de passe que je met dans mes fichiers PHP ???

Reply

Marsh Posté le 22-01-2003 à 17:28:25    

Davjack a écrit :

Et la commande "mysql_connect" présente-t'elle une faille ? Je dois faire comment pour que personne ne puisse voir le login et le mot de passe que je met dans mes fichiers PHP ???


le contenu de tes fichiers php n'est pas visible pour le surfer, il ne voit que le resultat une fois que le fichier php à été traité. tu peux donc utiliser la fonction mysql_connect sans probleme.
perso, j'ai un fichier connect.php qui contient genre :
 
$bddlogin="machin";
$bddpass="truc";
$bddhost="bidule";
 
et je l'include() dans tout les fichiers qui ont besoin de ces infos de connection...ca permet de ne modifier qu'un fichier quand tu changes de config.

Reply

Marsh Posté le 22-01-2003 à 19:17:48    

Ok, merci !

Reply

Marsh Posté le 22-01-2003 à 22:40:09    

Reply

Marsh Posté le 24-01-2003 à 16:45:55    

Une (grosse) erreur que l'on rencontre, c'est un code découper en différents fichiers, mais sans l'extension.php !
J'ai déjà vu un mot de passe stoquer dans un fichier du nom de « pass.ini » :/.

Reply

Marsh Posté le 24-01-2003 à 18:03:47    

Kalex a écrit :

Une (grosse) erreur que l'on rencontre, c'est un code découper en différents fichiers, mais sans l'extension.php !
J'ai déjà vu un mot de passe stoquer dans un fichier du nom de « pass.ini » :/.


Pour completer tes dires il y a aussi le fameux *.inc ou certain hebergeur ne l'interprete pas comme du php je me rappelle que j'utilsais cette extention dans mon site et une apres par hasard j'ai voulu taper directement le nom de mon fichier *.inc et la je vois apparaitre mon login et mot de pass de ma connexion alors j'ai fais savoir a mon hebergeur que c'etais un trou assez important. Donc moralité de l'histoire  :non:  ne pas utilisé des extention exotique au rique de ce faire reniflé par un gamin.
contentez vous d'un *.php  
 
Pour revenir au probleme de login/pass récupérable, a mon sens c'est pas trop possible sauf si tu le mes dans un cookie ou en chaine de caractere dans un parametre.  
Il faut arrété de psychoté :pt1cable:  !.........


---------------
Si je suis près de toi c'est soit pour t'embrasser ou te croquer, alors à ce moment là rappelle toi de ce que tu m'as fait. du bien ou du mal?
Reply

Marsh Posté le 24-01-2003 à 18:11:14    

ouai :/
 
les .inc, ça suxx...
 
J'utilise que .php quoi qu'il arrive.
 
Ceci-dit, il existe (et il existera toujours) des failles de sécu quand même, mais elles sont pas à la portée du mec moyen.  
De plus, quand on sait que tous ce qui est asp, perl, cgi etc... n'est finalement pas plus sécurisé, la solution ultime n'existe pas.

Reply

Marsh Posté le 24-01-2003 à 18:37:53    

ouais de toute manière dans ta base SQL, tu peux administrer les acces comme tu le souhaites pour les visiteurs non enregistrés ou le user "nobody"(apache je crois avec PHP en fonctionnant en module).
pour les autres il faut faire (par ex.), une table MySQL, et faire un script qui consulte cette table "secrete" puis donne un cookie autorisant une session pendant x jours sur le site.
 
c le beans quoi  :pt1cable:  
 

Davjack a écrit :

Je vais me mettre à l'accès à un base de donné MySql par l'intermédiaire du language PHP. Seulement j'ai entendu qu'il était très facile de trouver le mot de passe et le login de MySql quand il est exécuté par php.  
 
Ma question est donc : Comment je dois procéder pour me protéger ?

Reply

Marsh Posté le 24-01-2003 à 19:12:17    

Je ne sais pas si c'est disponible cher les hébergeurs genre Free, mais on peut normalement spécifié des droits pour différents utilisateurs. Par exemple, pour accéder à une section article dans un site, vous accédez à la table « article » avec un utilisateur qui n'a que le droit que de faire des « SELECT ». Alors, même si un gogol trouve votre mot de passe, il pourra juste s'amuser à faire des « SELECT ». :)
Vous pouvez même spécifier les droits de cet utilisateur par table et colonne !
 
Regardez la base mysql.
Vous y trouverez les tables :
 - user : les utilisateurs et leurs droits.
 - db : les droits par base.
 - tables_priv : les doits par table.
 - columns_priv: les droit pas colonne.
 
C'est comme ça qu'il faut s'y prendre pour sécuriser sa babase. ;)


Message édité par kalex le 24-01-2003 à 19:15:45
Reply

Marsh Posté le 25-01-2003 à 01:01:59    

Moi je préfère me faire hacker par un pro que par un novice donc raison de plus pour bien sécurisé son site.....


---------------
Si je suis près de toi c'est soit pour t'embrasser ou te croquer, alors à ce moment là rappelle toi de ce que tu m'as fait. du bien ou du mal?
Reply

Marsh Posté le 25-01-2003 à 15:25:32    

Kalex a écrit :

Alors, même si un gogol trouve votre mot de passe, il pourra juste s'amuser à faire des « SELECT ». :)


tout à fait d'accord, mais uniquement pour les failles de programmation. (ex passer des arguments dans une url pour faire exécuter une query que le programmeur n'avait pas prévu)  
 
Mais s'il trouve le pwd, c'est qu'il a accès aux sources php (par une très grosse faille) et comme en général il y a une interface admin, il y a le login/pwd de l'admin (qui peut tout faire). Donc là je dirais que ça sert à rien.

Reply

Marsh Posté le 25-01-2003 à 15:41:08    

On ne stoque pas le mot de passe d'administration sur le serveur. L'admin, il connaît son mot de passe, il peut bien l'entrer lorsqu'il se connecte.

Reply

Marsh Posté le 25-01-2003 à 15:59:42    

Kalex a écrit :

On ne stoque pas le mot de passe d'administration sur le serveur. L'admin, il connaît son mot de passe, il peut bien l'entrer lorsqu'il se connecte.


 :??:  et comment tu le vérifies le pwd ??
ps : je parle d'administration distant par interface php.

Reply

Marsh Posté le 25-01-2003 à 16:07:16    

:??:
C'est la base qui le vérifie.

Reply

Marsh Posté le 25-01-2003 à 16:15:48    

ok ok :)
donc il est stocké dans la bd et c'est le login/pwd de l'utilisateur admin de mysql.
c'est pas mauvais à la base comme idée... mais c'est rarement utilisé. je pense que sur la plupart des hébergements tu n'as droit qu'à 1 seul user (admin de la base).
 
mais ça veut dire aussi que ton user à droit restreint doit pouvoir lire la table des login/pwd de la base pour vérifer le login/pwd. Donc en résumé, ça change pas gd chose.


Message édité par ethernal le 25-01-2003 à 16:17:25
Reply

Marsh Posté le 25-01-2003 à 16:27:29    

ben si  !
 
perso j'host chez moi et pour sql j'ai plusieur compte donc ca sert :)

Reply

Marsh Posté le 25-01-2003 à 16:36:42    

ethernal a écrit :

ok ok :)
donc il est stocké dans la bd et c'est le login/pwd de l'utilisateur admin de mysql.
c'est pas mauvais à la base comme idée... mais c'est rarement utilisé. je pense que sur la plupart des hébergements tu n'as droit qu'à 1 seul user (admin de la base).
 
mais ça veut dire aussi que ton user à droit restreint doit pouvoir lire la table des login/pwd de la base pour vérifer le login/pwd. Donc en résumé, ça change pas gd chose.


Code :
  1. select Password from user;
  2. +------------------+
  3. | Password         |
  4. +------------------+
  5. | 6f2cfb60a027b232 |
  6. +------------------+

C'est pas trés lisible. ;)
De plus, rappelle-toi qu'on peut spécifier les droits par bases et tables. Donc, tu interdis à ton user de lire les bases ou tables que tu as envie ! :)


Message édité par kalex le 25-01-2003 à 16:38:56
Reply

Marsh Posté le 25-01-2003 à 16:40:13    

bon je résume alors :

  • possibilité 1 :

je trouve une faille dans ton script de connexion des users (par ex pour un forum) et je me loggue en admin -> j'ai accès à toute l'interface admin de ton site. D'accord, je n'ai pas ton login et pwd, ça m'empêchera pas de modifier ta bd par l'interface que tu as faites, c'est limité, mais ça t'embêtera certainement.
 

  • possibilité 2 :

tu as une grosse faille, je peux exécuter le code que je veux chez toi.  je lis tes scripts, je vois ton login/pwd d'accès à ta base (sans droit). je me fais mon script qui affiche la liste des utilisateurs mysql et leur pwd. je ne peux pas les modifier (pas le droit avec ce login). je décode ton login/pwd admin de la base. je refais un script qui me connecte en admin. ton site et ta base sont finis.
 
Entre nous, c'est un peu plus dur que de trouver le login/pwd directement dans les sources, mais ça n'arrêtera pas celui qui le veut.
 
Tu sais certainement comme moi que la sécu est un ensemble. (firewall, configuration du serveur & failles logicielles, code php, ...)
Et je dis pas du tout que votre méthode est nulle ou inutile, que du contraire, je suis pour, ça rend la tâche plus difficile.
je dis juste que ça fait partie d'une totalité et que si tu te bornes à cela, ton pc n'est pas en sécurité.

Reply

Marsh Posté le 25-01-2003 à 16:50:20    

Kalex a écrit :


De plus, rappelle-toi qu'on peut spécifier les droits par bases et tables. Donc, tu interdis à ton user de lire les bases ou tables que tu as envie ! :)


 
hum je me demande si j'ai tout compris ???
tu veux dire que le login/pwd envoyé par le formulaire à un script php est celui qui sera utilisé pour la connexion mysql ?
 
pas mal  :jap:  
 
mais tu dois qd même avoir un login/pwd de connexion par défaut qui est codé dans php non ?
si ce login/pwd n'a pas le droit de lire la table des user de mysql ? là ça devient très intéressant !!  [:tuffgong]

Reply

Marsh Posté le 25-01-2003 à 16:53:54    

mais comment un utilisateur non inscrit fait-il pour s'enregistrer ? --> tu es limité là non ? puisqu'il ne peut pas lire cette table des comptes de mysql et encore moins la modifier avec la connexion mysql qu'il utilise par défaut

Reply

Marsh Posté le 25-01-2003 à 17:09:00    

Tu peux spécifier dans le détail les droits que tu accordes à un utilisateur : au niveau des bases, des tables et même de colonnes.
Un utilisateur peut avoir le droit d'ajouter une entrée dans une table, mais pas de la lire...
 
M'enfin je n'y ai pas vraiment réfléchi,  je n'ai jamais eu à coder de forum (ça va peut-être changer :D).
 
Edit : voir http://dev.nexen.net/docs/mysql/an [...] system.php


Message édité par kalex le 25-01-2003 à 17:28:46
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed