Question au sujet des bases de donnée

Vous avez des questions à poser au sujet de nos services ou vous n'arrivez pas à choisir le pack d'hébergement qu'il vous faut ? Avant de commander votre pack ou même après, n'hésitez pas à nous demander conseil.
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

[justify]Bonjour,

Je suis actuellement entrain de créer un site pour un ami, il sera hébergé chez vous, j'ai déjà tout prévu et surtout j'ai déjà 2 sites chez vous et c'est donc pour ça que j'ai une question.

Sur mes 2 sites déjà en ligne, j'ai essayé de me faire une page d'administration pour éviter d'avoir à venir dans PMA à chaque fois, cette page est donc sous forme de formulaire que l'on rempli et qui, lorsqu'on appuie sur "ok" ou "envoyer" rempli la base de donner comme il se doit pour que l'affichage des rajout se fasse tout seul grâce à PHP et des requête MySQL. En local tout fonctionne à merveille, mais lorsque je test ça sur le site, on me refuse l'accès à la base de donnée.

Est-ce une erreur dans mes codes ou bien est-ce normal que l'on ne puisse pas agir ainsi une fois le site hébergé ?

Ca m'embete assez, pas pour mes 2 premiers site, c'est moi qui les gère donc aller dans PMA ne pose pas plus de problème que ça pour faire les rajouts, mais le 3eme que je suis entrain de faire serait rempli par une personne qui n'y connait rien, du coup ça m'embete un peu qu'elle soit obligé elle aussi de passer par PMA...

Je ne sais pas si je suis très clair, ni même si je post au bon endroit, alors si tel n'est pas le cas, j'en suis désolée.

Merci à toutes personnes qui pourra me répondre.

Cordialement.
Zoubidaz, alias Lolo.[/justify]
Franceserv
Messages : 905
Inscription : 2 avril 2010 à 20:14

Bonjour,

D'après ce que je lis, c'est simplement du code PHP qui exécute des requêtes SQL. PMA n'est qu'une interface WEB pour administrer ses tables et pas forcement pour les remplir, on créent des sites pour cela :)

Je pense alors à une erreur dans votre code et avec le message d'erreur ca serai encore plus simple pour dire ce qui se passe :)
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

Je sais que PMA est une interface, mais normalement, avec une page administrative sur mon site, je peux bien intégrer du code à l'intérieur de mes bases de données, de la même façon que pour un forum par exemple ?

Je donnerai le code dans mon prochain message ne vous en faite pas, c'est juste que je ne l'ai pas avec moi là, et en plus de ça je rencontre un autre problème qui lui m'embête bien plus parce que du coup ça fait foirer tout mon code ><

Merci de ta réponse en tous cas ^^

Edit : Désolée, c'était tout simplement de ma faute, j'avais oublié de remettre la connexion au serveur de franceserv et non plus à mon local
Franceserv
Messages : 905
Inscription : 2 avril 2010 à 20:14

D'accord ;)

Pour confirmer, oui l'extension PDO-MySQL de PHP est bien disponible et il en est de même pour les procédures stockées.
Passionaqua
Messages : 300
Inscription : 7 mai 2010 à 19:27

Si MySQL refuse la connexion, c'est surement parce que tu indiques un mauvais mot de passe et / ou identifiant et / ou une mauvaise BDD ?
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

Merci pour toute ses réponses. Et je vais encore m'excuser, parce qu'en mettant à jour mon code, tout fonctionne très bien pour les pages d'administration. J'avais donc du faire une erreur dans mes code de bases. Je suis vraiment désolée pour le dérangement !

passionaqua : Comme je l'avais dis cette erreur là était tout simplement de ma faute, j'avais laissé mes code d'accès pour travaillé sur le local plutôt que ceux voulu une fois hébergé sur FranceServ ^^


Quoi qu'il en soit, le problème est résolu ! Merci pour vos réponses rapide ;)
Passionaqua
Messages : 300
Inscription : 7 mai 2010 à 19:27

Si tout va bien, c'est parfait !

Un petit conseil : As-tu pensés à utiliser un système contre les attaques CSRF ? C'est très conseillé ;)
Franceserv
Messages : 905
Inscription : 2 avril 2010 à 20:14

Avant de penser à protéger son site des CSRF il faut déjà s'attarder sur l'injection XSS qui est bien plus répandue et pas du tout ciblée.

Le CSRF n'est pas véritablement une attaque de l'extérieur comme c'est le propriétaire de la session lui même qui vas exécuter à son insu un code qui vas effectuer des actions à sa place. Ce code malicieux est d'ailleurs écrit uniquement pour un site donné et pour des actions connues à l'avance.

C'est donc une attaque très ciblée et assez rare. Il y a deux ans par exemple, le webmestre de WebRankInfo avait été attaqué via sa webmail chez Google Mail par une faille CSRF, c'est pour dire que même Google il y a deux ans avait des problèmes avec ça. Facebook aurait pu également avoir cette faille mais l'attaque du blog de Sarkozy il y a 2 semaines semble avoir eu lieu à l'aide d'un autre moyen.

Pensez à XSS avant CSRF :)
Inconnu
Cet utilisateur a supprimé son compte et n’existe plus.
Messages : 6340
Inscription : 29 décembre 2010 à 18:15

Que faut-il faire pour se protéger contre tout ça ?
J'avoue que j'arrive à apprendre assez vite quand il s'agit des codes, mais je me suis jamais penché sur les problèmes lier à ce genre de chose en fait...

Dans mon code j'utilise des requêtes préparées, il me semble que ca règle quelque souci de protection, mais en dehors de ça, faut-il fait autre chose ?
Franceserv
Messages : 905
Inscription : 2 avril 2010 à 20:14

Il faut penser à protéger les variables saisies par l'internaute et notamment le faire en amont pour ne pas a avoir à le faire partout et en oublier.

Voici par exemple un bout de code qui parcours toutes les variables $_POST :

Code : Tout sélectionner

foreach ($_POST as $key => $value)
  {
  if( (!empty($value)) && (!is_array($value)) )
    {
    $_POST[$key] = mysql_real_escape_string($value);
    $_POST[$key] = utf8_encode(htmlentities($_POST[$key],ENT_NOQUOTES,'UTF-8'));
    }
  }
Ce code vas transformer toutes les variables $_POST en caractères HTML avec la fonction htmlentities(). Ainsi, si on met un code javascript/php dans un formulaire, les balises seront encodées et bien que le caractère "<" s'affichera tel quel sur le navigateur, au niveau du code source ce caractère sera en fait écrit en HTML de cette manière : "<" et ne sera pas interprété par le serveur comme une balise. La fonction htmlentities() étant encore pour du latin1, j'ai effectuer une conversion en UTF8 comme mon site est en UTF8.

La fonction mysql_real_escape_string() vas éviter toutes les injections SQL et "antislasher" les apostrophes dans les valeurs saisies mais seulement lors de la requête et non pas en permanence dans la table MySQL.

Au niveau de la fonction mysql_query() il faudra penser à faire l'inverse du htmlentities() pour retrouver les accents dans sa base MySQL. Le mieux est d'écrire une fonction qui vas nous le faire à notre place :

Code : Tout sélectionner

function fsh_mysql_query($sql)
  {
  $sql = html_entity_decode($sql,ENT_NOQUOTES,'UTF-8');
  return mysql_query($sql);
  }
Voilà en gros un peu pour bloquer le XSS.
Répondre