defacer Δημοσ. 4 Αυγούστου 2011 Δημοσ. 4 Αυγούστου 2011 με αυτήν εχω διαβάσει οτι αποφεύγουμε τα sql injection ; Όχι. Sql injection αποφεύγεις κάνοντας escape όλες τις μεταβλητές που μπαίνουν σε κάποιο query. Αυτό γίνεται είτε με τη mysql_real_escape_string είτε (καλύτερα) χρησιμοποιώντας prepared statements και bound variables (γενικά η προσέγγιση αυτή είναι και ευκολότερη γιατί έχει κάποιες παραπάνω ευκολίες) όπως θα δεις αν ξεκινήσεις από εδώ. Για άμεσα παραδείγματα δες πώς κάνεις connection και πώς κάνεις query. Ιστορικά η PHP (με ενεργοποιημένο το magic_quotes_gpc) έκανε addslashes() σε όλες τις μεταβλητές των $_GET, $_POST, $_REQUEST και καλά για να προστατευτείς από SQL injection (η addslashes() είναι ο πιο συνηθισμένος λάθος τρόπος να κάνεις mysql_real_escape_string() αλλά δεν επεκτείνομαι για να μην ξεφύγουμε από το θέμα). Επειδή εσύ σωστά κάνεις mysql_real_escape_string, το ζητούμενο είναι να "ξεκάνεις" πρώτα τη "βοήθεια" που σου δίνει το magic_quotes_gpc, και εκεί κολλάει η stripslashes (κάνει το αντίθετο της addslashes). Βλέπω χρησιμοποιεις τον ternary operator το κάνεις απλα για να γλυτωνείς τις if και τις else ή εξευπηρετεί κάπου αλλου ? Ναι, για να γλυτώσω μια if/else η οποία είναι υπερβολικά απλή. Δε χρειάζεται για κάτι τόσο απλό να γράφεις 5 γραμμές κώδικα.
chrism4111 Δημοσ. 4 Αυγούστου 2011 Μέλος Δημοσ. 4 Αυγούστου 2011 Όχι. Sql injection αποφεύγεις κάνοντας escape όλες τις μεταβλητές που μπαίνουν σε κάποιο query. Αυτό γίνεται είτε με τη mysql_real_escape_string είτε (καλύτερα) χρησιμοποιώντας prepared statements και bound variables (γενικά η προσέγγιση αυτή είναι και ευκολότερη γιατί έχει κάποιες παραπάνω ευκολίες) όπως θα δεις αν ξεκινήσεις από εδώ. Για άμεσα παραδείγματα δες πώς κάνεις connection και πώς κάνεις query. Ιστορικά η PHP (με ενεργοποιημένο το magic_quotes_gpc) έκανε addslashes() σε όλες τις μεταβλητές των $_GET, $_POST, $_REQUEST και καλά για να προστατευτείς από SQL injection (η addslashes() είναι ο πιο συνηθισμένος λάθος τρόπος να κάνεις mysql_real_escape_string() αλλά δεν επεκτείνομαι για να μην ξεφύγουμε από το θέμα). Επειδή εσύ σωστά κάνεις mysql_real_escape_string, το ζητούμενο είναι να "ξεκάνεις" πρώτα τη "βοήθεια" που σου δίνει το magic_quotes_gpc, και εκεί κολλάει η stripslashes (κάνει το αντίθετο της addslashes). Ναι, για να γλυτώσω μια if/else η οποία είναι υπερβολικά απλή. Δε χρειάζεται για κάτι τόσο απλό να γράφεις 5 γραμμές κώδικα. Ευχαριστώ που κάθησες και ασχολήθηκες με το θέμα ... Πιστεύω με κατατόπισες αρκετά στα θέματα ασφάλειας ... Μένει η μελέτη
Maniakos Δημοσ. 4 Αυγούστου 2011 Δημοσ. 4 Αυγούστου 2011 H magic_quotes_gpc ειναι PHP 4 thing και έχει γίνει deprecate στην PHP 5.3.x καθώς και διάφορες άλλες αηδίες της PHP 4 που θα πρέπει να ξεγράψεις από το μυαλό σου καθώς γράφεις κώδικα. Αν έχεις μείνει ακόμα στην PHP 4 η χρησιμοποιείς κάποιο deprecated functionality από την παραπάνω λίστα, κακός. Update now. Οσο για την javascript, όπως ήδη σου εξηγήσαν παραπάνω, δεν έχει κανένα νόημα να ανακαλύψεις τον τροχό. jQuery is your friend.
defacer Δημοσ. 4 Αυγούστου 2011 Δημοσ. 4 Αυγούστου 2011 H magic_quotes_gpc ειναι PHP 4 thing και έχει γίνει deprecate στην PHP 5.3.x καθώς και διάφορες άλλες αηδίες της PHP 4 που θα πρέπει να ξεγράψεις από το μυαλό σου καθώς γράφεις κώδικα. Αν έχεις μείνει ακόμα στην PHP 4 η χρησιμοποιείς κάποιο deprecated functionality από την παραπάνω λίστα, κακός. Update now. Το θέμα είναι πως δέν ήξερε για ποιό ακριβώς λόγο χρησιμοποιείται εκεί η stripslashes(), και τι σχέση έχει αυτό με τα magic quotes, και κατ' επέκταση του αν είναι deprecated ή off by default ή κάτι άλλο. Θα τα μάθει στην πορεία, αλλά και πάλι επειδή ποτέ δεν ξέρεις πού θα καταλήξει να τρέχει ο κώδικάς σου το deprecated ή όχι δεν έχει πολλή σημασία -- ό,τι έγινε έγινε, και τώρα θα κουβαλάμε τα if για αρκετό καιρό ακόμα.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.