Η ασφάλεια είναι ένα τεράστιο θέμα, όσο και παρεξηγημένο.
Αυτό που έχει σημασία είναι η φύση της εφαρμογής σου και μέχρι ποιό επίπεδο θέλεις να την αφαλίσεις καθώς και τι εργαλεία έχεις στα "χέρια" σου...
Από τον Web Server (π.χ. IIS, Apache, Sun) μέχρι και ειδικό software προστασίας (software ή hardware firewall, antispy, antiviruses.... κλπ) και την γλώσσα ανάπτυξης (php, asp).
Ασφάλεια Εφαρμογής
1. Θα εφαρμόσεις Security σε επίπεδο χρήστη. Να μην μπαίνει κανένας μη εξουσιοδοτημένος?. Η εφαρμογή π.χ. να ζητάει login/password...?
2. Τα προγράμματα σου δεν πρέπει να έχουν βασικές αδυναμίες σε επιθέσεις από άτομα που δεν έχουν τι να κάνουν και δοκιμάζουν φτηνά κόλπα για να κάνουν τους έξυπνους... που δηστυχώς υπάρχει περίπτωση να σου προκαλέσουνε ζημιά.
Μια και ζητάς όμως έναν μπούσουλα θα σου πρότεινα να μάθεις τις δυο βασικές μορφές επίθεσης καθώς και τρόπους προστασίας:
1. XSS και
2. SQL Injection
Πολύ πολύ γενικά με κίνδυνο να σε αποπροσανατολίσω... θα ήθελα να σου πω τα εξής:
1. Για τα sources, include files nα χρησιμοποιείς .asp ή .aspx ή .php ή τέλος πάντων ένα extention που είναι δηλωμένο στον web server σου και δεν θα δείξει τα περιεχόμενα του στον χρήστη αν κάποιος τα αναφέρει στο url box.
2. Να κάνεις πάντα έλεγχο παραμέτρων πριν τις βάλεις σε κάποια εντολή SQL ως εξής:
2.α. Έλεγχο του τύπου της παραμέτρου. Π.χ. οι αριθμοί να είναι αριθμοί, αλλιώς μύνημα κάθους του στυλ.... "Μη αποδεκτοί χαρακτήρες"!
2.β. Αν είναι string η παράμετρος, έλεγχο του μεγέθους του και έλεγχο αν υπάρχουν μέσα περίεργοι χαρακτήρες που είναι απαραίτητοι για XSS html injections, όπως:
'/>', '<', κλπ κλπ....
3. Να αποφεύγεις γενικά να χρησιμοποιείς παραμέτρους από το url.... καθώς να ελέγχεις όλες τις τιμές που δίνει ο χρήστης από όλα τα text boxes.
4. Αν χρησιμοποιείς passwrods να χρησιμοποιείς encryption. Να ξέρεις οτι ποτέ δεν πρέπει να μετακινείς το password από εδώ κι από εκεί από την μια φόρμα στην άλλη κλπ κλπ. Προτείνω να χρησιμοποιήσεις την εξής τεχνική:
Έστω οτι χρησιμοποιείς MD5 encryption.
Να χρησιμοπoιήσεις ένα πεδίο στην βάση σου (το λεγόμενο salt) το οποίο θα προστίθετε στο πραγματικό password που δίνει ο χρήστης και θα παραμένει π.χ. στο current session μέσα σε ένα cookie.
Κάθε χρήστης να έχει το δικό του salt.
Παραδειγμα:
Έστω οτι pasword ενός χρήστη είναι 'xamenos' και το salt του είναι 'stimetafrasi' !
Η κρυπτογράφηση του xamenos είναι 84AD2C74D0A4EE1A557912A781EBE20C.
Η κρυπτογράφηση του xamenosstimetafrasi είναι 39A4C3BB0095C083ADAEC3A8387B594C.
Στο cookie θα αναφέρεται το 39A4C3BB0095C083ADAEC3A8387B594C. Σπάζοντας το κάποιος θα πάρει το xamenosstimetafrasi που δεν είναι το πραγματικό password.... Θα πάει λοιπόν γεμάτος "χαρά" να δώσει το xamenosstimetafrasi σαν password και θα πάρει.... ένα "Unkonown Password!"
Πιο εξελιγμένη περίπτωση είναι να χρησιμοποιείς 2 Salt: Ένα σαν prefix κι ένα σαν suffix....
Τεσπα.... μπορείς να κάνεις άπειρους συνδιασμούς με μόνο εμπόδιο.... την φαντασία σου.
Nothing to declare...