Τι πρέπει να κάνω για να ξεφύγουν κατά την αποστολή ενός ερωτήματος;

ψήφοι
18

Όταν εκτελείτε ένα ερώτημα SQL, θα πρέπει να καθαρίσετε χορδές σας ή οι χρήστες μπορούν να εκτελέσουν κακόβουλο SQL στην ιστοσελίδα σας.

Συνήθως μόνο μια escape_string λειτουργία (μπλα), η οποία:

  • Αντικαθιστά αποδράσεις ( \) με διπλό αποδράσεις ( \\).
  • Αντικαθιστά μονά εισαγωγικά ( ') με δραπέτευσε και μόνο προσφορά ( \').

Είναι αυτή η κατάλληλη; Υπάρχει μια τρύπα στον κώδικά μου; Είναι μια βιβλιοθήκη που μπορεί να κάνει αυτό γρήγορα και αξιόπιστα για μένα;

Θα ήθελα να δω χαριτωμένη λύσεις σε Perl, Java και PHP.

Δημοσιεύθηκε 05/08/2008 στις 19:45
πηγή χρήστη
Σε άλλες γλώσσες...                            


11 απαντήσεις

ψήφοι
7

Για μέγιστη ασφάλεια, τις επιδόσεις και την ορθότητα χρήση έτοιμων προτάσεων. Εδώ είναι πώς να το κάνουμε αυτό με πολλά παραδείγματα σε διάφορες γλώσσες, συμπεριλαμβανομένων PHP:

https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks

Απαντήθηκε 05/08/2008 στις 20:38
πηγή χρήστη

ψήφοι
2

Θα ξεφύγει και σχόλια (διπλή παύλα)

--
Απαντήθηκε 05/08/2008 στις 19:46
πηγή χρήστη

ψήφοι
1

Ένα μεγάλο πράγμα για χρήση σε PHP είναι η ΠΟΠ . Παίρνει ένα μεγάλο μέρος της εικασία από την αντιμετώπιση εξασφάλιση SQL σας (και το σύνολο του SQL πράγματά σας σε γενικές γραμμές). Υποστηρίζει έτοιμη δηλώσεις, οι οποίες βοηθήσει σε μεγάλο βαθμό προς την παρεμπόδιση επιθέσεων SQL Injection.

Μια μεγάλη αλφαβητάρι για ΠΟΠ περιλαμβάνεται στο βιβλίο The PHP Ανθολογία 101 Βασικές συμβουλές, τεχνάσματα και αμυχές από Davey Shafik κλπ 2nd Ed . Κάνει τη μάθηση μια αύρα και είναι εξαιρετική ως σημείο αναφοράς. Δεν χρειάζεται καν να σκεφτείτε οτιδήποτε άλλο εκτός από την πραγματική Ερώτημα SQL πια.

Απαντήθηκε 05/08/2008 στις 20:28
πηγή χρήστη

ψήφοι
0

Στο ερώτημα MySQL, όταν χρησιμοποιεί το LIKE, και φροντίστε να ξεφύγουν από την «_» χαρακτήρες, δεδομένου ότι δεν διέφυγε από mysql_real_escape_string.

Για αναφορά, δείτε εδώ

Απαντήθηκε 14/10/2008 στις 05:57
πηγή χρήστη

ψήφοι
0

Χρήση έτοιμων προτάσεων.

Απαντήθηκε 16/09/2008 στις 22:14
πηγή χρήστη

ψήφοι
0

το API MySQL C έχει το δικό του mysql_escape_string(). Χρησιμοποιώντας αυτό ή είναι ισοδύναμο θα ήταν καλύτερα.

Απαντήθηκε 14/08/2008 στις 18:59
πηγή χρήστη

ψήφοι
0

Χρησιμοποιήστε παρασκευασμένα / παραμετροποιημένη ερωτήματα!

Απαντήθηκε 05/08/2008 στις 20:55
πηγή χρήστη

ψήφοι
0

Στην PHP, είμαι χρησιμοποιώντας αυτό το ένα και θα εκτιμούσα κάθε σχόλιο γι 'αυτό:

function quote_smart($valeur) 
{ 
    if (get_magic_quotes_gpc()) 
        $valeur = stripslashes($valeur); 

    if (!is_numeric($valeur)) 
        $valeur = mysql_real_escape_string($valeur); 

    return $valeur; 
}


$IdS = quote_smart($_POST['theID']); 
$sql = " 
SELECT * FROM Students 
WHERE IdStudent={$IdS}; 
";

Χρειάζεται ένα ακόμη επαλήθευση εάν ένα πεδίο μπορεί να είναι NULL:

$picture = NULL;
$theidyouwant = 7;
$Name = 'WOOD';


if(is_null($picture)) 
    $p = 'NULL'; 
else
    $p = "'".quote_smart($picture)."'"; 

$IdS = quote_smart($theidyouwant);

$requete = "SELECT * FROM Students
    WHERE IdStudent={$IdS} AND
    PictureStudent={$p} AND
    NameStudent='{$Name}';
    ";

Αυτό είναι το απολαύσετε! (Ελπίζω η θέση θα στείλει σωστά κάτω παύλες και δεν & # 95?)

Απαντήθηκε 05/08/2008 στις 20:21
πηγή χρήστη

ψήφοι
0

Είστε σε καλύτερη θέση με τη χρήση έτοιμων προτάσεων με σύμβολα κράτησης θέσης. Χρησιμοποιείτε PHP, .NET ... Είτε έτσι είτε αλλιώς, η οποία εκπονήθηκε δηλώσεις θα παρέχει περισσότερη ασφάλεια, αλλά θα μπορούσε να αποτελέσει δείγμα.

Απαντήθηκε 05/08/2008 στις 19:48
πηγή χρήστη

ψήφοι
0

Ποια γλώσσα χρησιμοποιείτε; Φαίνεται όπως σχεδόν όλοι τους έχουν ενσωματωμένες λειτουργίες SQL διαφυγής που θα ήταν καλύτερο να χρησιμοποιήσετε.

Για παράδειγμα, η PHP έχει mysql_real_escape_string και addslashes .

Απαντήθηκε 05/08/2008 στις 19:46
πηγή χρήστη

ψήφοι
-1

Δεν είμαι σίγουρος αν MySql υποστηρίζει παραμετροποιημένη ερωτήματα, εάν ναι, θα πρέπει να κάνουμε μια προσπάθεια να πάτε αυτή η διαδρομή. Αυτό θα εξασφαλίσει την είσοδο χρήστες δεν μπορούν να κάνουν τίποτα κακόβουλο.

Διαφορετικά κάποιοι «κακή» χαρακτήρες, εκτός από αυτά που αναφέρονται θα πρέπει να ερωτηματικό (?) Και σχόλια (- και / * * /).

Απαντήθηκε 05/08/2008 στις 19:49
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more