Secure coding practices for web applications
Master Thesis
Συγγραφέας
Μαθάς, Χρήστος - Μηνάς
Mathas, Christos - Minas
Ημερομηνία
2021-07-05Επιβλέπων
Γκρίτζαλης, ΣτέφανοςGritzalis, Stefanos
Προβολή/ Άνοιγμα
Λέξεις κλειδιά
Secure coding ; SAST ; Web applications ; Code audit ; JavaΠερίληψη
Οι δικτυακές εφαρμογές αποτελούν ένα μεγάλο κομμάτι του σημερινού διαδικτύου και σε πολλές περιπτώσεις διαχειρίζονται ευαίσθητες πληροφορίες και εκτελούν κρίσιμες λειτουργίες των οποίων η διακινδύνευση μπορεί να οδηγήσει τόσο σε χρηματικό κόστος και όσο και σε ζητήματα ιδιωτικότητας. Έτσι, το ζήτημα της ασφάλειας των δικτυακών εφαρμογών αποτελεί ένα ζήτημα του οποίου η σημασία έχει γιγαντωθεί με τον καιρό λόγω της αυξημένης χρήσης τους. Παρ’ όλο που η ασφάλεια των δικτυακών εφαρμογών έχει βελτιωθεί τα τελευταία χρόνια, η παρούσα κατάσταση συνεχίζει να μην είναι ικανοποιητική. Οι σχετικές έρευνες αναφέρουν πως το μεγαλύτερο ποσοστό των ευπαθειών εντοπίζονται στον πηγαίο κώδικα των δικτυακών εφαρμογών. Προς αυτή τη κατεύθυνση, η πιο επιφανής λύση είναι η ένταξη ελέγχων ασφάλειας καθ’ όλη τη διάρκεια του κύκλου ζωής ανάπτυξης λογισμικού μέσω της οποίας επιτυγχάνεται έγκαιρος εντοπισμός των ευπαθειών και μείωση του κόστους και προσπάθειας διόρθωσής τους. Η σχετική βιβλιογραφία έχει προτείνει κατευθυντήριες για την ένταξη ελέγχων ασφάλειας σε κάθε φάση του κύκλου ζωής ανάπτυξης λογισμικού. Στο πλαίσιο αυτής της διπλωματικής εργασίας, εστιάζουμε κυρίως σε δύο από αυτές τις κατευθυντήριες. Συγκεκριμένα, παρουσιάζουμε τις βέλτιστες πρακτικές ασφαλούς προγραμματισμού για τις γλώσσες Java - PHP και το πλαίσιο .NET καθώς και την αυτοματοποιημένη και χειροκίνητη ανάλυση πηγαίου κώδικα για ευπάθειες ασφάλειας. Η αυτοματοποιημένη ανάλυση πραγματοποιείται με χρήση των εργαλείων στατικής ανάλυσης SonarQube και Reshift για την ανάλυση των εφαρμογών Apache Unomi και dotCMS. Τα αποτελέσματα αξιολογούνται χειροκίνητα για τον διαχωρισμό τους σε αληθώς θετικά και ψευδώς θετικά, παρέχοντας μία εικόνα για την επίγνωση και εφαρμογή των προτύπων ασφαλούς προγραμματισμού στην βιομηχανία αλλά και τη τελευταία λέξη της τεχνολογίας στα εργαλεία στατικής ανάλυσης.