Ασφάλεια στη Java

Η Java επιτρέπει τη μεταφορά εκτελέσιμου περιεχομένου και την εκτέλεσή του σε οποιαδήποτε αρχιτεκτονική και λειτουργικό σύστημα έχει υλοποιηθεί η ιδεατή μηχανή Java (Java virtual machine). Οι περισσότεροι εξυπηρετητές υποστηρίζουν την μεταφορά και εκτέλεση προγραμμάτων Java μέσα από τον ιστό με τη χρήση της ετικέτας της HTML applet. Τέτοια προγράμματα περιέχουν ανέμπιστο (untrusted) κώδικα. Για την προστασία του χρήστη και του μηχανήματος ο ανέμπιστος κώδικας ελέγχεται ως προς την ορθότητά του και εκτελείται σε ένα περιβάλλον περιορισμένων δυνατοτήτων, το σκάμμα (sandbox). Οι περιορισμοί προγραμμάτων που εκτελούνται στο σκάμμα εξαρτώνται από την πολιτική ασφάλειας που έχει οριστεί. Μια τυπική πολιτική ασφάλειας περιέχει τους παρακάτω περιορισμούς: Ο έλεγχος του κώδικα διασφαλίζει τις παρακάτω ιδιότητες: Στο JDK 1.1 υπάρχει η δυνατότητα φορτώματος μιας έμπιστης εφαρμογής από το δίκτυο αν αυτή έχει την κατάλληλη ψηφιακή υπογραφή. Τα προβλήματα ασφάλειας στην περίπτωση αυτή είναι παρόμοια με αυτά της τεχνολογίας ActiveX. Στην Java 2 υπάρχει δυνατότητα ορισμού διαφορετικής πολιτικής ασφάλειας ανάλογα με την υπογραφή μιας εφαρμογής.

Ορισμένα προβλήματα ασφάλειας που δημιουργούνται από τη χρήση της Java είναι τα εξής: