Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
2104 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  securiser l'acces à la base mysql

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

securiser l'acces à la base mysql

n°2309592
olitask
Posté le 04-01-2018 à 20:10:55  profilanswer
 

Bonjour /bonsoir
 
J'ai un projet de station météo connectée en gprs qui envoie toute les 15 minutes  une requette  : http://ipDuRaspPi/repertoire/write [...] ?o=15&v=16 sur mon raspberry pi. Celui ci rempli la base mysql avec la date, la vitesse du vent et son orientation. voila le contenu de mon fichier write_data.php

Code :
  1. <?php
  2.     // on se connecte à notre base
  3.     $base = mysql_connect (localhost, loginBaseDonne, motDePasseBasedonne);
  4.     mysql_select_db ('data_anemo', $data_anemo) ;
  5.   ?>
  6. <html>
  7. <head>
  8. <title>Insertion de données dans la base</title>
  9. </head>
  10. <body>
  11. <?php
  12. $ori = $_GET["o"];
  13. $vit = $_GET["v"];
  14. $tmp = $_GET["t"];
  15. // lancement de la requete
  16. $sql = "INSERT INTO data_anemo.data_anemo1 (`id`, `Date`, `orientation`, `vitesse`, `temperature`) VALUES  ('',NOW() ,$ori , $vit, $tmp)";
  17. // on insere le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
  18. mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
  19. // on ferme la connexion à la base
  20. mysql_close();
  21. ?>
  22. qque chose vient d'être inseré dans la base.
  23. <p>ces valeurs : <?php echo $_GET['o'] . ' ' . $_GET['v'] . ' ' . $_GET["t"] . ' ' ; ?> !</p>
  24. </body>
  25. </html>


 
et je peut ensuite lire mes données via :  

Code :
  1. <?php
  2. // on se connecte à MySQL
  3. $db = mysql_connect('localhost', 'loginBaseDeDonne', 'motDePasseBaseDeDonnee');
  4. // on sélectionne la base
  5. mysql_select_db('data_anemo',$db);
  6. // on crée la requête SQL
  7. $sql = 'SELECT * FROM data_anemo1 ORDER BY Date DESC LIMIT 20';
  8. // on envoie la requête
  9. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  10. // on fait une boucle qui va faire un tour pour chaque enregistrement
  11. while($data = mysql_fetch_assoc($req))
  12.     {
  13.     // on affiche les informations de l'enregistrement en cours
  14.     echo '<b>'.$data['id'].' '.$data['Date'].' UTC</b>    vitesse: '.$data['vitesse'].'km/h';
  15.     echo ' <i>  orientation : '.$data['orientation'].' degrés</i><br>';
  16.     }
  17. // on ferme la connexion à mysql
  18. mysql_close();
  19. ?>


 
Je ne suis pas un programmateur php, j'ai pris des bouts de code à droite et à gauche, mais je comprend quand même ce que çà signifie.
Je  me rend compte que bien que ça fonctionne, ce n'est vraiment pas sécurisé.
Que puis je faire pour sécuriser ces connections ?
 
1ere chose, envoyer une "clé" en paramètre , rajouter &cle=ihzefcnfcgyo575fc à la fin de mon http://ipDuRaspPi/repertoire/write [...] ?o=15&v=16, et si ele n'est pas présente, rejeter l'ajout à la base de donnée
 
2eme chose, le login et le mdp sont en clair dans les fichier write_data.php et test.php .  Comment faire pour tout sécuriser ?
 
Cordialement   Olivier
PS si vous me répondez, pensez que vous avez à faire à quelqu'un qui n'a pas l'habitude de php ou de mysql
 
 

mood
Publicité
Posté le 04-01-2018 à 20:10:55  profilanswer
 

n°2309594
tompouss
Petit chat
Posté le 04-01-2018 à 20:42:24  profilanswer
 

Le code que tu utilses pour la connection à la base de données est obsolète et comporte de grosse failles de sécuité,
actuellement le mieux est d'utiliser PDO pour les connexions à une db.
 
Un lien indispensable sur les bonnes prartiques php
http://www.phptherightway.com/
 
Pour l'autentification, s'il n'y a qu'un utilisateur tu peux utiliser htaccess
https://www.digitalocean.com/commun [...] untu-14-04
 
mais je pense que  l'Authentification basique demande une connection https pour être un minimum sécurisée donc le mieux c'est d'utiliser https://letsencrypt.org/getting-started/, surtout si l'application est accessible sur internet


Message édité par tompouss le 04-01-2018 à 20:43:45

---------------
collectionneur de pâtes thermiques
n°2309600
olitask
Posté le 04-01-2018 à 23:47:28  profilanswer
 

Htaccess  -> manque de bol j'ai un serveur nginx
 
PDO ok, mais est ce securisé de laisser en clair le login et pwd dans le fichier write_data.php  ?  Comment faite vous  ?
Je n'arrive pas à trouver de tuto la dessus. Pouvez vous m'en conseiller un ?
Cordialement

n°2309603
tompouss
Petit chat
Posté le 05-01-2018 à 05:33:26  profilanswer
 

L'authentification n'est pas propre à Apache: c'est dans les spécifications du protocole http donc tu peux le configurer aussi sur Nginx mais sans htaccess évidemment.
https://www.nginx.com/resources/adm [...] c/#example
 
 
Stocker des mot de passe en clair n'est JAMAIS une bonne idée, quelque soit l'endroit où ils se trouvent (db, ou fichier).
 
Le mieux actuellement est de chiffrer les mots de passe avec l'algo Bcrypt qui est prévu pour.  
Tu peux l'utiliser avec Nginx pour sécuriser l'accès à ton programme.
http://www.genecasanova.com/labs/s [...] ation.html
 
Je ne pense pas que stocker des mots passe, même chiffrés en dur dans un fichier PHP soit une bonne idée.
Ici ils expliquent pq il ne faut pas stocker les password dans un fichier php:
https://security.stackexchange.com/ [...] n-file-php
A mon avis, les 2 meilleures solutions sont soit stockage des  login et mots de passe par apache, nginx soit dans la base de données, mais chiffrés dans tous les cas .
 
Perso dans ton cas, le stockage dans un fichier nginx me semble être la meilleure solution.


Message édité par tompouss le 05-01-2018 à 06:12:23

---------------
collectionneur de pâtes thermiques
n°2309640
olitask
Posté le 06-01-2018 à 23:42:14  profilanswer
 

Bon merci.  Ca n'a pas l'air simple cette affaire. Je vais creuser...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  securiser l'acces à la base mysql

 

Sujets relatifs
base de donnée enorme sur pc classiqueMySQL Conflit Xampp / Wamp
Constructeur, base de données et session[MySQL] Combiner un select classique et un count()
[MySQL] Ajout de multiples enregistrements avec triggerPYTH COUNT MYSQL.Connector
Editeur de base de données Remplacer le contenu d'une colonne dans ma base de donnée SQL
VBA copier une valeur d'un tableau acces vers un autre sous conditionImporter base de données 1&1
Plus de sujets relatifs à : securiser l'acces à la base mysql


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR