Une question stupide à propos des attaques par injection SQL en PHP....

  • RedBMedia
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Mai 01, 2007
  • Messages: 315
  • Status: Offline

Message Mai 13th, 2010, 12:10 pm

Donc, jusqu'à ce point, j'ai été en utilisant la fonction mysql_real_escape_string () pour nettoyer les données entrantes avant qu'elle ne touche la DB. Mais, quand on regarde de retour à mon code, j'ai remarqué pour quelque raison que je ne l'ai utilisé lors de l'instruction SQL a été l'insertion de données. Maintenant, j'ai regardé cet exemple et ils utilisent la fonction mysql_real_escape_string (), même lorsque sélectionner de données d'ING. Alors, dois-je revenir en arrière et changer tout mon code? Et comprennent mysql_real_escape_string () lors de la sélection de la DB ainsi?
Joe Hall
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 13th, 2010, 12:10 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mai 13th, 2010, 2:03 pm

Chaque requête que vous avez une section qui a été construit en utilisant les données fournies par l'utilisateur, doit être projeté. Chaque requête, SELECT, INSERT, DELETE, etc Tout le monde.

Les données soumises par l'utilisateur comprend (mais n'est pas limité à) $ _GET, $ _POST, $ _COOKIE et variables, ainsi que des variables que vous ne réalisent pas venant de l'utilisateur, à première vue, telles que $ _SERVER ["HTTP_REFERER" [] ou $ _SERVER "HTTP_ACCEPT_LANGUAGE"]
Strong with this one, the sudo is.
  • RedBMedia
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Mai 01, 2007
  • Messages: 315
  • Status: Offline

Message Mai 13th, 2010, 2:19 pm

joebert a écrit:
Chaque requête que vous avez une section qui a été construit en utilisant les données fournies par l'utilisateur, doit être projeté. Chaque requête, SELECT, INSERT, DELETE, etc Tout le monde.

Les données soumises par l'utilisateur comprend (mais n'est pas limité à) $ _GET, $ _POST, $ _COOKIE et variables, ainsi que des variables que vous ne réalisent pas venant de l'utilisateur, à première vue, telles que $ _SERVER ["HTTP_REFERER" [] ou $ _SERVER "HTTP_ACCEPT_LANGUAGE"]


Merci pour le conseil.... Affirmative, comment un attaquant pousser un code malveillant dans le tableau $ _SERVER?
Joe Hall
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mai 13th, 2010, 3:03 pm

Le tableau $ _SERVER comprend généralement les choses de têtes de requête HTTP, des choses comme le référent, le caractère accepté ensembles / codages, langue préférée, etc

Par exemple, si vous avez quelque chose qui se connecte $ _SERVER ["HTTP_REFERRER"] à la base de données, vous voudrez écran qui vous car il peut contenir des données incorrectes aussi facilement que GET ou POST peut.
Strong with this one, the sudo is.
  • RedBMedia
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Mai 01, 2007
  • Messages: 315
  • Status: Offline

Message Mai 13th, 2010, 3:15 pm

Oh, je vois, si l'attaquant peut usurper l'en-tête..... Jamais pensé à ça.
Joe Hall
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mai 13th, 2010, 4:25 pm

Ce que je fais au moment de décider si je dois l'écran quelque chose me poser la question », Est-ce quelque chose que le serveur peut générer, même sans demande de l'utilisateur ? ", Si la réponse est non, puis les données sont immédiatement soumis à un contrôle. Si la réponse est oui, c'est quelque chose que le serveur peut générer sans une demande d'un utilisateur, je regarde pour voir si ses quelque chose que le serveur génère à lui seul, ou si ses quelque chose que le serveur va substituer aux données fournies par un utilisateur avant de décider s'il ya lieu de l'écran.

Un cas limite serait de $ _SERVER ["QUERY_STRING"], je sais que le serveur génère cette variable, mais je sais aussi son généré par l'utilisateur des données soumises.

Theres $ _SERVER ["REMOTE_PORT"], qui est techniquement envoyé par l'utilisateur, mais si cela a été falsifiée, puis la communication TCP n'aurait jamais laissé faire la demande au script en premier lieu. Je sens que je peux faire confiance à cette variable particulière, mais si sentiment Im parahnoid je pourrais type jette.

PHP Code: [ Select ]
$rport = (int)$_SERVER['REMOTE_PORT'];
Strong with this one, the sudo is.

Afficher de l'information

  • Total des messages de ce sujet: 6 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 169 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC