Ερώτηση σχετικά με Tiny MCE και sql injection

Γενικά θέματα για τις γλώσσες προγραμματισμού που δεν καλύπτονται από τις άλλες περιοχές της κατηγορίας.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
g_p
Δημοσιεύσεις: 134
Εγγραφή: 28 Μάιος 2010 12:43

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από g_p » 14 Ιουν 2010 13:29

Παιδιά γεια σας,

χρησιμοποιώ έναν editor/κειμενογράφο που είναι open source το Tiny MCE, που στην ουσία μετατρέπει το περιεχόμενο σε html κώδικα.

Αυτό το content το εισάγω απευθείας στην βάση χωρίς να ελέγχω αν υπάρχουν επικίνδυνοι χαρακτήρες όπως single quots ( ' ) σχόλια MySQL -- κλπ.

Ξέρει κανείς αν ο editor προσφέρει κάποια μορφή ασφάλειας για sql injection ή πρεπει εγώ να κάνω τον έλεγχο??

Ευχαριστώ

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από nbc » 14 Ιουν 2010 14:05

Κανείς editor δεν μπορεί να σε προστατέψει από sql injection. Για την ακρίβεια, δεν μπορεί να σε προστατέψει από τίποτα. Αυτό είναι θέμα δικό σου.

Για παράδειγμα, ας υποθέσουμε πως ο editor μπορεί και κάνει check για XSS attacks. Ε, και λοιπόν? Εγώ κάνω disable τη javascript, ο editor δεν φορτώνεται, οπότε σου περνάω ότι κώδικα θέλω. Εσύ, το απεικονίζεις ως έχει και ...χαιρετίσματα. H, αν προτιμάς, δεν χρησιμοποιώ καν τη φόρμα σου. Κάνω post με δικό μου script.

Συμπέρασμα: από τη στιγμή που επιτρέπεις στο χρήστη html, πας γυρεύοντας. Δεν υπάρχει προστασία. Αν επιμένεις, και αντέχεις το εξωφρενικό μέγεθος του html purifier, αυτό είναι ότι καλύτερο μπορείς να κάνεις. Αλλά, επαναλαμβάνω, 100% προστατευμένος από όλα τα attack vectors που μπορεί κανείς να επινοήσει, δεν μπορείς να είσαι.

g_p
Δημοσιεύσεις: 134
Εγγραφή: 28 Μάιος 2010 12:43

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από g_p » 14 Ιουν 2010 14:25

nbc έγραψε:Κανείς editor δεν μπορεί να σε προστατέψει από sql injection. Για την ακρίβεια, δεν μπορεί να σε προστατέψει από τίποτα. Αυτό είναι θέμα δικό σου.

Για παράδειγμα, ας υποθέσουμε πως ο editor μπορεί και κάνει check για XSS attacks. Ε, και λοιπόν? Εγώ κάνω disable τη javascript, ο editor δεν φορτώνεται, οπότε σου περνάω ότι κώδικα θέλω. Εσύ, το απεικονίζεις ως έχει και ...χαιρετίσματα. H, αν προτιμάς, δεν χρησιμοποιώ καν τη φόρμα σου. Κάνω post με δικό μου script.

Συμπέρασμα: από τη στιγμή που επιτρέπεις στο χρήστη html, πας γυρεύοντας. Δεν υπάρχει προστασία. Αν επιμένεις, και αντέχεις το εξωφρενικό μέγεθος του html purifier, αυτό είναι ότι καλύτερο μπορείς να κάνεις. Αλλά, επαναλαμβάνω, 100% προστατευμένος από όλα τα attack vectors που μπορεί κανείς να επινοήσει, δεν μπορείς να είσαι.
1. Χμ...πως μπορώ να μην επιτρέπω στον χρήστη html και το περιεχόμενο που γράφει να
το μετατρέπω μετά σε html?

2. π.χ. όταν γράφουμε σε κάποιο forum, που έχει πάλι editor, πως προστατεύεται το site από επικίνδυνους χαρακτήρες???Επίσης τα forums δεν μας επιτρέπουν να γράφουμε html κώδικα???

3. Εκτός από το html purifier τι άλλο θα μου πρότεινες να κάνω? Ώστε να αποθηκεύω html κώδικα στην βάση???

Ευχασριστώ :D

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από nbc » 14 Ιουν 2010 15:01

1. Γι αυτόν τον λόγο έχουν επινοηθεί οι λεγόμενες markup "languages". Δεν είναι γλώσσες, βέβαια, είναι κάποια σύνταξη που παράγει html. Τέτοιες υπάρχουν πολλές. Θα τις βρεις σε Wiki, fourms, και κάποια CMS. Μια τέτοια σύνταξη είναι και η markdown.

2. Δε γνωρίζω forum που να επιτρέπει html. Αν υπάρχει, τότε να είσαι βέβαιος πως δεν θα υπάρχει για πολύ ακόμη. Εδώ για παράδειγμα, όταν θέλουμε bold γράφουμε bold[ /b] και όχι <b>bold</b> (πρόσεξε το html tag, δεν γίνεται parse - εμφανίζεται ως έχει) . Αυτή η σύνταξη λέγεται bbcode και είναι η πιο συνηθισμένη.

3. Στο site του html purifier έχει ένα κεντρικό link (Comparison) στο οποίο υπάρχει σύγκριση με άλλες λύσεις, τις πλέον δημοφιλείς. Διαλέγεις και παίρνεις. Εγώ, είμαι κατά οπότε δεν μπορώ να σου συστήσω τίποτα. Μιλάμε πάντα για τη δυνατότητα html στο frontend. Στο backend μπορείς να κάνεις εξαίρεση, καθώς αν κάποιος αποκτήσει πρόσβαση εκεί, κάνει και αλλιώς ζημιά.

Δεν θέλω να σε τρομάξω, αλλά δες τι μπορεί να σκαρφιστεί κάποιος, στο διαβόητο XSS Cheat Sheet, ώστε να πάρεις μια γεύση γιατί είναι εξαιρετικά περίπλοκος ο έλεγχος της html.

g_p
Δημοσιεύσεις: 134
Εγγραφή: 28 Μάιος 2010 12:43

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από g_p » 14 Ιουν 2010 15:16

Θα ήθελα να μου πεις τη γνώμη σου.
Πρέπει na τροποποιήσεις μία υπάρχουσα σελίδα για τον administrator στην οποία θα υπάρχει μία φόρμα
με πολλά πεδία όπως
όνομα προϊόντος
κατηγορία
περιγραφή.

Στην υπάρχουσα σελίδα το πεδίο περιγραφή
παιρνει μόνο html κώδικα (tags etc) και τον αποθηκεύει στην βάση απευθείας.Έτσι όταν τραβάει κάποιος
την εγγραφή από την βάση έχει έτοιμη σελίδα html.

Εγώ θέλω να αλλάξω τον κώδικα αυτής της σελίδας και εκεί που λέει
περιγραφή να να βάλω έναν editor όπως αυτός που υπάρχει στα forums και να μπορεί ο χρήστης επιλέγοντας bold να εμφανίζονατι bold, και να υπάρχουν εργαλεία απάνω όπως επιλογή γραμματοσειράς, italics, και γενικά αυτά που έχει το tiny mce. Για αυτό το λόγο σκέφτηκα το tiny mce, επειδή σου παράγει html κώδικα και έχει και επιλογές απάνω πολλές.

Στην ουσία τον tiny mce τον διαχειρίζεται μόνο ο διαχειριστής, δεν θα είναι καποια φόρμα για τους χρήστες που βρίσκονται online για αυτό σκεφτόμουνα ότι δεν θα ήταν και τόσο πρόβλημα να χρησιμοποιηθεί αλλά μόνο στην σελίδα του admin.

Εσύ στην θέση μου, τι θα έκανες εκεί που ήταν το πεδίο περιγραφή, ποιον editor θα χρησιμποποιούσες για να βοηθήσεις τον διαχειριστή να δημιουργήσει μία html σελίδα???

Ευχαριστώ

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από nbc » 14 Ιουν 2010 15:23

Εντάξει, αν είναι μόνο για τον admin, μπορείς να το κάνεις (στο έγραψα και παραπάνω).

g_p
Δημοσιεύσεις: 134
Εγγραφή: 28 Μάιος 2010 12:43

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από g_p » 14 Ιουν 2010 15:30

nbc έγραψε:Εντάξει, αν είναι μόνο για τον admin, μπορείς να το κάνεις (στο έγραψα και παραπάνω).
Α οκ ευχαριστώ, απλά 1. αν έπρεπε ο χρήστης να κάνει submit κείμενο το οποίο θα πρέπει να μεταφραστεί σε html θα πρέπει αναγκαστικά να χρησιμοποιήσουμε bbcode και mark up languages οπως μου είχες γραψει και προηγουμένως???

2.
Α επίσης κάτι άλλο, αν στον administrator έκανα έλεγχο και σε περίπτωση που έγραφε ' εγώ το έκανα replace με single quot θα ήταν too much ή απλά να το αφήσω ως έχει?

Και πάλι ευχαριστώ

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Ερώτηση σχετικά με Tiny MCE και sql injection

Δημοσίευση από nbc » 14 Ιουν 2010 16:07

1. Αν χρειαστείς editor για τους χρήστες, και δεν θέλεις να είναι απλό textarea (δηλαδή προτιμάς μουράτο editor), τότε μια πολύ καλή λύση είναι ο markitup. Τον στολίζεις όπως θέλεις και δουλεύει με όποια σύνταξη επιθυμείς. Εννοείται, html δεν επιτρέπεις, άρα δεν χρησιμοποιείς wysiwyg html editor. Ένα πέρασμα του input από την htmlspecialchars() είναι αρκετό για να σε καλύψει στο 99%. Το υπόλοιπο 1% ανήκει σε browser bugs και αυτό αλλάζει σε κάθε έκδοση, οπότε δεν έχει νόημα να το συζητάμε.

2. Δεν καταλαβαίνω γιατί σε απασχολεί το quote. Δεν είναι το quote το πρόβλημά για το οποίο συζητάμε, αλλά το XSS, δηλαδή, η javascript. Πέρνα το κείμενο από τη mysql_real_escape_string() και είσαι ok.

Απάντηση

Επιστροφή στο “γλώσσες προγραμματισμού - γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης