WoodSell3r Δημοσ. 24 Σεπτεμβρίου 2014 Δημοσ. 24 Σεπτεμβρίου 2014 Καλημέρα,λοιπόν, σε μια σελίδα μου παρατήρησα ότι αν στη διευθύνση δώσω τον χαρακτήρα % με πετάει στην error σελίδα της εταιρείας host (000webhost συγκεκριμένα) την στιγμή όμως που διαθέτω custom σελίδα για προβολή 404 και λοιπών σφαλμάτων. Ακόμα, η σελίδα δεν δέχεται μεταβλητές ούτε μέσω get ούτε και με post. Απλά πάνω που δοκίμαζα διάφορα πράγματα για να δω αν είμαι οκ απο xss, έβαλα και το % και είδα πως αντί να βγω σε custom error page πήγα στο λινκ του host για σφάλματα.Παράδειγμα:Δοκιμή: www.domain.com/aandfnalkdnkl/sds/d/sd/fs/df ---> custom error pageΔοκιμή: www.domain.com/?<script>alert(1);</script> ---> φορτώνει ξανά η index.phpΔοκιμή: www.domain.com/%<script>alert(1);</script> ---> με στέλνει εδώ error404.000webhost.com/?Αυτό μπορώ να το αντιμετωπίσω με κανονική έκφραση στη μεταβλητή $_SERVER['QUERY_STRING']για να κόψει όλους τους παράξενους χαρακτήρες ή με συναρτήσεις τύπου htmlspecialchars ;Ακόμα, αφού by default φορτώνει η index.php τον έλεγχο για το url τον κάνω σε αυτήν, έτσι ;Κάθε άποψη δεκτή
geomagas Δημοσ. 24 Σεπτεμβρίου 2014 Δημοσ. 24 Σεπτεμβρίου 2014 Το % είναι ειδικός χαρακτήρας του url encoding. Μην τον χρησιμοποιείς σε urls για σκοπούς διαφορετικούς από τη σημασία του. Κατά συνέπεια, δεν πρόκειται ποτέ να φτάσει στο QUERY_STRING σου για να τον επεξεργαστείς. Κατά τα άλλα, τα αποτελέσματα των δοκιμών σου είναι απολύτως αναμενόμενα, αν το καλοσκεφτείς.
WoodSell3r Δημοσ. 24 Σεπτεμβρίου 2014 Μέλος Δημοσ. 24 Σεπτεμβρίου 2014 Μάλιστα, δηλαδή δεν υπάρχει κάποιος τρόπος έτσι ώστε αν το url έχει το % ο επισκέπτης να πηγαίνει στη custom error page ;Πιστεύω πως κάτι μπορεί να γίνει μέσω .htaccess αλλά δεν είμαι σίγουρος.
alou Δημοσ. 24 Σεπτεμβρίου 2014 Δημοσ. 24 Σεπτεμβρίου 2014 Ο server απαντάει με διαφορετικό status code (πιθανότατα 400 / bad request) όταν του λενε τέτοιες μπούρδες οπότε δεν οδηγείτε ο επισκέπτης σε σελίδα 404, που είναι άλλο response. Αυτό που κάνεις, δεν έχει κανένα νόημα πάντως. το url ή percent encoding χρησιμοποιεί τον συγκεκριμένο χαρακτήρα όπως τα html entities τον & για να κωδικοποιήσουν κάποιους χαρακτήρες. όταν στο url γράφεις tade.com/%< υπάρχει πρόβλημα γιατί ΔΕΝ υπάρχει τέτοιος χαρακτήρας, το % θα γίνει decoded μαζί με τους επόμενους δυο χαρακτήρες και θα βγει κάτι, στη συγκεκριμένη περίπτωση τίποτα οπότε bad request. Αν δεν καταλαβαίνεις πως λειτουργεί η διαδικασία, σκέψου πόσο δύσκολο είναι να φανταστείς πιθανά injection. Αν σε απασχολεί η ασφάλεια, καταρχάς φύγε από free hosting και μετά δούλεψε πάνω στα script που τρέχουν, ο server ξέρει πολύ καλύτερα από εσένα να χειριστεί τέτοια θέματα χωρίς παρεμβολές στο htaccess.
geomagas Δημοσ. 24 Σεπτεμβρίου 2014 Δημοσ. 24 Σεπτεμβρίου 2014 Μάλιστα, δηλαδή δεν υπάρχει κάποιος τρόπος έτσι ώστε αν το url έχει το % ο επισκέπτης να πηγαίνει στη custom error page ; Πιστεύω πως κάτι μπορεί να γίνει μέσω .htaccess αλλά δεν είμαι σίγουρος. Πως θα γίνει μέσω htaccess τη στιγμή που λέμε ότι αυτό δεν έρχεται ποτέ στον server; (εννοώ ότι απορίπτεται λόγω λάθους στη σύνταξη) Αν δεις στο link που σου έδωσα, το % έχει τη δική του κωδικοποίηση (προφανώς, αφού ως είδικός χαρακτήρας θα πρέπει να κωδικοποιηθεί για να χάσει την ειδική του σημασία). Οπότε, αν θέλεις σώνει και καλά να έχεις τέτοιους χαρακτήρες στα url, θα πρέπει να τους αντικαταστήσεις με το encoding τους, που είναι το %25. Για παράδειγμα, το http://example.com/foo/bar?slice=20%&dice=6faces θα γινόταν http://example.com/foo/bar?slice=20%25&dice=6faces Ο server θα έκανε decode, το %25 θα μεταφραζόταν σε %, και έτσι θα περνούσε στο QUERY_STRING σου. Problem solved.
WoodSell3r Δημοσ. 24 Σεπτεμβρίου 2014 Μέλος Δημοσ. 24 Σεπτεμβρίου 2014 Μάλιστα, τώρα έγινε κατανοητό το θέμα και από τους δύο σας.Ευχαριστώ για τον χρόνο σας
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα