Νομίζω Ηλεία σημαίνει να πω ότι UTF-8 είναι επίσης ασφαλές από αυτό, παρά το γεγονός ότι οριστεί ένας χαρακτήρας πολλών byte. Τελείωσα τη θέση μου με ένα σημείωμα: "Αυτό το είδος της επίθεσης είναι δυνατή με κάθε κωδικοποίηση χαρακτήρων, όπου υπάρχει μια έγκυρη πολυ -byte χαρακτήρα που καταλήγει σε 0x5C. " 0x5C είναι 92 στο δεκαδικό, η οποία είναι σαφώς στο χαμηλότερο 128. Επειδή UTF-8 στηρίγματα που αντιπροσωπεύουν αυτούς τους χαρακτήρες με ένα μόνο byte, αυτό το συγκεκριμένο πρόβλημα έχει ήδη αντιμετωπιστεί. Ελέγξτε τον πίνακα παρατίθενται εδώ: http://en.wikipedia.org/wiki/UTF-8 Αν κοιτάξετε κάθε μια από τις μορφές στη στήλη UTF-8, θα παρατηρήσετε ότι οι μορφές πολλαπλών byte όλη του τη δύναμη κάθε byte εκτός από την πρώτη ακολουθεί τη 10xxxxxx μορφή. Με άλλα λόγια, κάθε επόμενο byte έχει μια τιμή που είναι 128 ή μεγαλύτερη σε δεκαδικό. Δεν είμαι σίγουρος αν αυτό θα διαλευκανθούν τίποτα, αλλά το ελπίζω. :-) # 1.2.2.1 Κρις Σίφλετ (Αρχική) στις 01/22/2006 19:33 (Απάντηση) Ακριβώς όπως εμείς επικύρωση δεδομένων αίτημα, το ίδιο πρέπει να γίνει και για τα δεδομένα της βάσης δεδομένων. Στο παραπάνω παράδειγμα, γνωρίζουμε μια δεδομένη όνομα θα πρέπει να ταιριάζει μόνο μία γραμμή με τη ρύθμιση του ως πρωτεύον κλειδί. Έτσι, προσθέστε μόνο το όνομα χρήστη στο ερώτημα. Πρώτα από όλα βεβαιωθείτε ότι μόνο μία σειρά επιστρέφεται. Στη συνέχεια, ελέγξτε ότι το επιστρεφόμενο κωδικός πρόσβασης ταιριάζει με το δημοσίευσε. # 2 gogogadgetscott (Αρχική) στις 01/22/2006 21:27 (απάντηση) Γιατί τόσο περίπλοκο τρόπο; Κάντε MD5 και από τις δύο τιμές και συγκρίνετε με το MD5 στο ΣΠ. Και μπορούν να βάλουν κάτι σε αυτούς τους τομείς. Χρήστη υποκοριστικό είναι μια χαρά και δουλεύουν για μένα είναι αρκετά καλό. # 2.1 martinpav στις 23/01/2006 10:49 (Απάντηση) Νομίζω ότι μπορεί να διαφέρουν λίγο. Η τεχνική μου ήταν να καταστεί δυνατή η τακτική όνομα όπως ότι μπορώ να χρησιμοποιήσω για την εκτύπωση ποιος είναι ο χρήστης για την ταυτότητα. Όσο για την είσοδο μου, χρησιμοποιήστε ένα hash μόνο για τον κωδικό πρόσβασης, εκτός αν υπάρχει μια είσοδο με μπισκότο το οποίο χρησιμοποιεί ένα αλατισμένα τιμή κατακερματισμού για το όνομα χρήστη και τον κωδικό πρόσβασης (2 διαφορετικών σύνθετων hashes). Αλλά, όπως για όλα τα δεδομένα, θα πρέπει πάντα να ελέγχεται, όπως και στην , ελέγξτε τις πληροφορίες ακόμη και δύο φορές ... Ένας σχετικά με τον τρόπο και ένας στο δρόμο έξω. Πείτε server της βάσης δεδομένων σας με κάποιο τρόπο εκτέθηκε ... Αυτός είναι ο λόγος που υπάρχει πάντα διπλοί έλεγχοι. Σκλήρυνση εφαρμογών θα πρέπει να είναι ένα must. # 2.1.1 Mike Willbanks στις 23/01/2006 13:47 (Απάντηση) ορυχείο επιτρέπουν εκτυπώσιμη όνομα πάρα πολύ. Ίσως έχω περιγράψει πάρα πολύ απλό. Με την είσοδο, τα δεδομένα χρήστη που ανακτώνται από db χρησιμοποιώντας MD5 από το όνομα χρήστη και τον κωδικό πρόσβασης για το πού clausule. Και οι δύο τιμές αποθηκεύονται id dB ως hashes MD5. Αν βρεθεί χρήστη, hash από πολλές πληροφορίες γίνεται και αποθηκεύονται με timestamp σε db. Σε κάθε αίτηση, hash ανασυνταχθεί και σε σύγκριση με ένα αποθηκευμένο σε db. Αν δεν ταιριάζουν ή ο χρήστης ήταν ανενεργό, αφού έχει αποσυνδεθεί Τα δεδομένα των χρηστών αποθηκεύονται σε συνεδρία (δεν περνούν / όνομα χρήστη). Id συνεδρίας αναγεννάται για κάθε αίτηση. Για μένα ο τρόπος που ελέγχουν δεν έχει νόημα. Μπορείτε να ανακτήσετε σειρά από db όπου name = $ _ POST ['όνομα'] και από συγκρίνουν $ _POST ['πέρασμα'] με τιμή από db. Τι διαφορά μεταξύ των δύο κάνει ελέγχους σε ερώτημα; Εάν η βάση δεδομένων είναι σε κίνδυνο, έχουν ήδη όλες τις πληροφορίες, έτσι δεν υπάρχει καμία διαφορά εάν συγκρίνετε τον κωδικό πρόσβασης στο ΣΠ ή εφαρμογή. # 2.1.1.1 martinpav στις 2006-01-24 4:01 (Απάντηση ) είναι ο περιορισμός μήκους των εισροών δεν μπορεί να μας προστατεύσει από SQL Injection; "chr (0xBF) chr (0x27)" ή 1 = 1 "string μήκος είναι 26 .. μπορούμε να το διορθώσουμε, παράδειγμα 20 .. Υπάρχει κάποιο άλλο πρόβλημα ασφάλειας από CSRF εκεί ή κάτι άλλο; Ευχαριστούμε ... # 3 AZIZ (Αρχική) στις 09/02/2006 21:13 (Απάντηση) Περιορισμός του μήκους των εισροών μπορεί να κάνει η εκμετάλλευση πιο δύσκολο, αλλά σίγουρα δεν είναι αδύνατο. # 3.1 Ηλεία Alshanetsky (Αρχική σελίδα) για 03/09/2006 17:23 (Απάντηση) σφάλμα που βρέθηκαν και σταθερή: http://dev.mysql.com/doc/refman/5.0/en/news-5-0-22.html ούτως ή άλλως, να είστε βέβαιος να γνωρίζουν την διαφορά μεταξύ «charset_name» ΣΕΤ ΟΝΟΜΑΤΑ σύνολο χαρακτήρων ΣΕΤ charset_name http://dev.mysql.com/doc/refman/4.1/en/charset-connection.html # 4 ... (Αρχική) στις 2006-10-05 04: 42 (Απάντηση) Cool, ευχαριστώ για την ενημέρωση. # 4.1 Ηλεία Alshanetsky (Αρχική) στις 2006-10-05 10:30 (Απάντηση) ποτέ δεν έχω κανένα πρόβλημα με εισαγωγικά σε χορδές. Χρησιμοποιώ πάντα: $ data = str_replace ("", "'', $ δεδομένων)? συντομότερο να πάρω τα δεδομένα από μη αξιόπιστη πηγή. Ακόμα κι αν ξεχάσω να το αλλάξετε αργότερα, εξακολουθεί να μοιάζει με ένα σήμα απόσπασμα. Αν είναι μια αξιόπιστη πηγή μου, η σειρά δεν έχει απόσπασμα αυτό -. Περίοδος Κατά τη διάρκεια των ετών που σίγουρα φαίνεται ότι η βιομηχανία επεξεργασίας των δεδομένων θα μπορούσε να έχει σταθερό αυτό το πρόβλημα. # 5 J στις 27/8/2007 19:07 (Απάντηση) ένα έργο που είχε προσληφθεί για να βοηθήσει οχυρώσουν υλοποιείται σε επίπεδο Web χτισμένο με το Linux, Apache, PHP και 5.2.4. Μιλάει σε μια βαθμίδα βάσης δεδομένων με χρήση MS SQL Server. Είναι ένα ισοδύναμο για mysql_real_escape_string για το διακομιστή MS SQL εκεί; Όντας ένα μισθωμένο χέρι σε αυτό το έργο, δεν έχω τη δυνατότητα να αλλάξουν τη βαθμίδα της βάσης δεδομένων σε MySQL. Ο κωδικός που συνδέεται στο διαδίκτυο βαθμίδας στα επίπεδα εφαρμογών και βάσεων δεδομένων είναι καλά σφραγισμένο και με τον κώδικα που επικυρώνει τα δεδομένα του χρήστη εισόδου σε ένα μέρος και η βάση δεδομένων κλήσεις σε μια άλλη. Δεδομένου ότι αυτά τα δύο κομμάτια της λειτουργικότητας είναι όμορφα έγκλειστα είμαι ελεύθερος να εξερευνήσει ένα νέο πρότυπο, όπως το μοντέλο έτοιμη δήλωση. Οφείλω να ομολογήσω ότι δεν έχουν καμία εμπειρία με αυτό το παράδειγμα, αλλά είμαι ένα γρήγορο μαθητή?-) Αν αυτό είναι το καλύτερο στοίχημα θα αγωνιστεί προς αυτή την κατεύθυνση. αλλά πρώτα θέλω να καταλάβουν πώς οι χρήστες MS SQL Server επιτευχθεί η λειτουργικότητα που παρέχεται από mysql_real_escape_string. ΤΙΑ. Χαιρετίζω τις σκέψεις σας. Εδώ είναι μια παραγωγική και ασφαλή 2008! Πλούσια # 6 RichSad (Αρχική) στις 2008-01-12 1:01 (Απάντηση) Από την PHP 5.2.3, είναι δυνατόν να χρησιμοποιήσει mysql_set_charset (), η οποία είναι σεβαστή από mysql_real_escape_string ().
Μεταφράζονται, παρακαλώ περιμένετε..
