Προς το περιεχόμενο

Mysql Injection (php)


kath

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω φτιαξει ενα φιλτρο , που αφαιρει γνωστες εντολες του mysql απο τα πεδια "login,password".

Aυτο που θελω να ρωτησω ειναι το εξης:

 

1 α)Το πεδιο "mail" στο οποιο αποθηκευεται σε αλλο table ,

δεν το φιλτραρω. Υπαρχει προβλημα ; (εφοσον τα πεδια Login,pass αποθηκευονται σε αλλο table)

 

1 β)Πως μπορω να βεβαιωθω οτι ο κωδικας ειναι οντως λειτουργικος ;

απλα γραφω ενα query στα πεδια ;

 

Ευχαριστω.

Δημοσ.

Φαντάσου ο χρήστης να δώσει για email: [email protected] OR 1=1 δεδομένου ότι έχεις τον παρακάτω κώδικα:

 

>
$mail = $_POST['mail'];
$query = "SELECT * FROM Email WHERE mail=".$mail;

 

Δεν ξέρω αν το φιλτράρισμα είναι η σωστή λύση. Εγώ χρησιμοποιώ μία συνάρτηση της μορφής:

 

>
  function qstr($a)
  {
     $str=str_replace("'","\"",$a);
  return "'".$str."'";
  }

 

και στην προηγούμενη περίπτωση θα έγραφα:

 

>
$query = "SELECT * FROM Email WHERE mail=$mail";

Δημοσ.
Φαντάσου ο χρήστης να δώσει για email: [email protected] OR 1=1 δεδομένου ότι έχεις τον παρακάτω κώδικα:

 

>
$mail = $_POST['mail'];
$query = "SELECT * FROM Email WHERE mail=".$mail;

 

 

Είναι πιο απλό :)

 

>
$mail = mysql_real_escape_string($_POST['mail']);
$query = "SELECT * FROM Email WHERE mail='$mail';

 

Οτι και να βάλεις μεσα στο mail' date=' δεν θα περάσει απο τα quotes :)

mysql_real_escape_string

Δημοσ.

Βασικα , το φιλτρο το χρησιμοποιω για να αναγνωριζω ποτε γινεται mysql injection.

Επισης , ξεχασα να αναφερω , οτι η ΙΡ του υποψηφιου "hacker" , θα αποθηκευεται σε μια ξεχωριστη βαση.

Η κεντρικη σελιδα για να εμφανιστει θα ελεγξει αν ΙΡ του χρηστη ειναι στην "μαυρη λιστα" , αν οχι θα φορτωσει τη σελιδα , αλλιως θα εμφανισει ενα μηνυμα του τυπου "Δεν επιτρεπεται προσβαση για την ΙΡ (ΙΡ ΧΡΗΣΤΗ) . Υπολοιπομενος χρονος μεχρι αφαιρεση απο την "μαυρη λιστα" $φορτωσε χρονο απο το table"..

Δημοσ.

Παιδιά εγώ προτείνω να φιλτράρεις όχι εντολές αλλά χαρακτήρες. Πιο συγκεκριμένα, απορρίπτω τους ειδικούς χαρακτήρες, πχ &,$,/,\ κλπ. Είναι πιο πρακτικό μου φαίνεται και απλό!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...