kath Δημοσ. 16 Μαΐου 2006 Δημοσ. 16 Μαΐου 2006 Εχω φτιαξει ενα φιλτρο , που αφαιρει γνωστες εντολες του mysql απο τα πεδια "login,password". Aυτο που θελω να ρωτησω ειναι το εξης: 1 α)Το πεδιο "mail" στο οποιο αποθηκευεται σε αλλο table , δεν το φιλτραρω. Υπαρχει προβλημα ; (εφοσον τα πεδια Login,pass αποθηκευονται σε αλλο table) 1 β)Πως μπορω να βεβαιωθω οτι ο κωδικας ειναι οντως λειτουργικος ; απλα γραφω ενα query στα πεδια ; Ευχαριστω.
Sta Δημοσ. 16 Μαΐου 2006 Δημοσ. 16 Μαΐου 2006 Φαντάσου ο χρήστης να δώσει για 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";
bandito Δημοσ. 17 Μαΐου 2006 Δημοσ. 17 Μαΐου 2006 Φαντάσου ο χρήστης να δώσει για 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
Cue Δημοσ. 17 Μαΐου 2006 Δημοσ. 17 Μαΐου 2006 και μιας και μιλάμε για SQL Injection...Injection Rejection
kath Δημοσ. 17 Μαΐου 2006 Μέλος Δημοσ. 17 Μαΐου 2006 Βασικα , το φιλτρο το χρησιμοποιω για να αναγνωριζω ποτε γινεται mysql injection. Επισης , ξεχασα να αναφερω , οτι η ΙΡ του υποψηφιου "hacker" , θα αποθηκευεται σε μια ξεχωριστη βαση. Η κεντρικη σελιδα για να εμφανιστει θα ελεγξει αν ΙΡ του χρηστη ειναι στην "μαυρη λιστα" , αν οχι θα φορτωσει τη σελιδα , αλλιως θα εμφανισει ενα μηνυμα του τυπου "Δεν επιτρεπεται προσβαση για την ΙΡ (ΙΡ ΧΡΗΣΤΗ) . Υπολοιπομενος χρονος μεχρι αφαιρεση απο την "μαυρη λιστα" $φορτωσε χρονο απο το table"..
kath Δημοσ. 17 Μαΐου 2006 Μέλος Δημοσ. 17 Μαΐου 2006 και μιας και μιλάμε για SQL Injection...Injection Rejection Ενδιαφερον .. ισως ειναι πιο βελτιστος κωδικας απ' τον δικο μου!..
HaPagan Δημοσ. 17 Μαΐου 2006 Δημοσ. 17 Μαΐου 2006 Παιδιά εγώ προτείνω να φιλτράρεις όχι εντολές αλλά χαρακτήρες. Πιο συγκεκριμένα, απορρίπτω τους ειδικούς χαρακτήρες, πχ &,$,/,\ κλπ. Είναι πιο πρακτικό μου φαίνεται και απλό!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.