IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Protection des données avant enregistrement dans Mysql


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut [Sécurité] Protection des données avant enregistrement dans Mysql
    Bonjour,

    j'ai un gros doute sur ma façon de faire pour l'enregistrement des données en toute sécurité dans une base de données mysql.

    voila les traitements que j'applique:

    - réception des données d'un formulaire

    - si get_magic_quotes_gpc() est activé j'enlève tous les antislashes avec la fonction stripslashes()

    - avec une première donnée (par exemple l'utilisateur & mdp) je vérifie dans ma base de données si celui existe de cette manière: "SELECT id FROM comptes WHERE utilisateur='".mysql_real_escape_string($user)."' AND mdp='".mysql_real_escape_string($mdp)."'"

    - ensuite j'insère dans ma base de données mon texte toujours en utilisant mysql_real_escape_string().

    Ceci est un exemple basique, j'aimerais savoir si tout cela est sécurisé, surtout concernant la suppression des anti-slashes et l'utilisation de la fonction mysql_real_escape_string().

    D'avance, merci.
    Thierry

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    Est-ce que quelqu'un peut m'aider ?

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    je dirais que oui, mais je stockerais pas le mot de passe en clair, j'utiliserais plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...SHA1(".mysql_real_escape_string($pass).")...
    pour le mot de passe

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    oui oui, a ce niveau il n'y a pas de soucis j'utilise bien SHA1, etc..

    c'est surtout pour les anti-slashes ainsi que l'utilisation uniquement de mysql_real_escape_string()

    merci

  5. #5
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 486
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 486
    Points : 6 027
    Points
    6 027
    Par défaut
    Regarde au niveau des expression régulière et tu limites la porté. Tu n'autorise que des intervales de caractères specifiquer [a-z,A-Z] etc... si jamais c'est pas conforme tu le jette. J'ai un de mes ancien prof qui a reussi passé les real_escape et addslashes mais comme sur un autre forum j'ai eu tres peut de gens qui m'ont cru je vais pas lancer cette polémique ici .

    Personnellement je récupère d'un coté tous les utilisteurs et je fais la comparaison à l'exterieur du SQL ainsi il est impossible de faire une attaque sur la table.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Moi je fais ça avant htmlspecialchars(mysql_real_escape_string()) et au besoin je filtre avec les expreg.
    A moins de tomber sur un pro particulièrement violent et qui m'en veut à fond, normalement ça dois suffir emplement.

    (oui je sais on doit utiliser htmlspecialchars en sortie et pas avant l'insertion nananinananere mais j'en démords pas ça économise des ressources comme ça).
    C'est pas parce que j'ai tort que vous avez raison.

  7. #7
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    (oui je sais on doit utiliser htmlspecialchars en sortie et pas avant l'insertion nananinananere mais j'en démords pas ça économise des ressources comme ça).
    c'est pas non plus une règle absolue. Je dirais meme que pour un login, ça peut se justifier. Sur le login, je met aussi un strip_tags, car il est clair que si le login contient des balises, c'est une attaque.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    ça peut se contourner mysql_real_escape_string() d'ailleurs ?
    C'est pas parce que j'ai tort que vous avez raison.

  9. #9
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 300
    Points : 93
    Points
    93
    Par défaut
    c'est ce que je souhaitait savoir, même si je ne l'ai pas formulé ainsi, bonne question !

    un avis pro serait le bien venu.

  10. #10
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 486
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 486
    Points : 6 027
    Points
    6 027
    Par défaut
    faite un tour sur le site de phpdirection il y a un article très complet sur ce sujet. En résumé, il y a pas de fonction idéal. Ce que je peux vous dire c'est qu'il y a rien de fiable pour un pro du crackage. Sauf séparer la requete du contrôle.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Et bien justement, que signifie "séparer la requête du contrôle ?"
    C'est pas parce que j'ai tort que vous avez raison.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/08/2012, 19h25
  2. Réponses: 1
    Dernier message: 08/08/2012, 16h38
  3. Réponses: 3
    Dernier message: 16/09/2010, 13h54
  4. Importer des données format CSV dans BBD MySQL
    Par Taz_8626 dans le forum Administration
    Réponses: 1
    Dernier message: 04/04/2006, 15h16
  5. traitement des données avant envoie dans MySQL
    Par italiasky dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 07/02/2006, 23h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo