Η κατανόηση των παραμέτρων .NET για «SecurityAction» για τα δικαιώματα




Μπορεί κανείς να εξηγήσει την έννοια και τους σκοπούς των τιμών για την απαρίθμησης SecurityAction;


Η σελίδα MSDN δεν είναι τρομερά σαφές. Λέει LinkDemand εμφανίζεται σε συλλογή just-in-time, ενώ η ζήτηση εμφανίζεται κατά το χρόνο εκτέλεσης.


Γιατί η διάκριση και σε ποιες περιπτώσεις θα μπορώ να χρησιμοποιήσω LinkDemand σε αντίθεση με την ζήτηση;


Επίσης, ποιες είναι οι περιπτώσεις χρήσης από τα άλλα ενδιαφέροντα αξίες όπως InheritenceDemand, διεκδικήσουν και να PermitOnly.
LinkDemand απαιτεί ουσιαστικά τον κωδικό κλήσης για να έχουν το συγκεκριμένο δικαίωμα. Η ζήτηση, από την άλλη πλευρά, απαιτεί όχι μόνο την κλήση κώδικα για να έχουν το συγκεκριμένο δικαίωμα, αλλά και τον κώδικα που ονομάζεται τον κωδικό κλήσης και τον κωδικό που ονομάζεται ότι, και ούτω καθεξής, σε όλη τη διαδρομή μέχρι τη στοίβα (ή μέχρις ότου assert βρίσκεται? βλέπε παρακάτω).


LinkDemand μπορεί να επιβληθεί σε ΚΟΕ χρόνο μεταγλώττισης, γιατί αν το πρόγραμμα μεταγλώττισης JIT χτυπά μια δήλωση που καλεί μια μέθοδο με LinkDemand, μπορεί να προσδιορίσει αμέσως αν ο κωδικός κλήσης έχει την άδεια ή όχι. Η ζήτηση πρέπει να εφαρμοστεί κατά το χρόνο εκτέλεσης κάθε φορά που μια κλήση γίνεται με τη μέθοδο, επειδή δεν είναι δυνατή κατά τη μεταγλώττιση για να ξέρετε τι θα είναι στη στοίβα κατά τη διάρκεια οποιαδήποτε πρόσκληση. Ως εκ τούτου, LinkDemand είναι πολύ πιο αποδοτική. Ωστόσο, η αντίστροφη σχέση για την εν λόγω απόδοση είναι λιγότερη ασφάλεια. Με LinkDemand, που πιστεύοντας ότι ο κωδικός κλήσης δεν πρόκειται να αφήσει ΤΗΣ κωδικός κλήσης (που μπορεί ή δεν μπορεί να έχει την άδεια) να το χρησιμοποιήσετε για φαύλους σκοπούς. (Με άλλα λόγια, έχουν εμπιστοσύνη ότι δεν υπάρχουν τρύπες ασφαλείας στον κώδικα κλήσης που καλούντες του μπορεί να εκμεταλλευτεί για να αποκτήσουν πρόσβαση έμμεσα με τη μέθοδο με την LinkDemand.) Με τη ζήτηση, ξέρετε ότι όλοι στη στοίβα έχει καμία απολύτως άδεια (σε τουλάχιστον μέχρι ενός Assert βρεθεί), οπότε δεν υπάρχει κίνδυνος από μη αξιόπιστες καλούντες.


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


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


PermitOnly είναι σαν Deny, εκτός αντί να αρνείται μια ειδική άδεια αρνείται κάθε δικαίωμα, εκτός από εκείνη που καθορίζεται.


InheritanceDemand, σε αντίθεση με τους άλλους, δεν σχετίζεται άμεσα με τη μέθοδο κλήσεις, αλλά λέει ότι μια κατηγορία που δεν έχει την άδεια, δεν μπορεί να κληρονομήσει από την τάξη με το InheritanceDemand. Αυτό θα μπορούσε να χρησιμοποιηθεί, για παράδειγμα, να σταματήσει να μη αξιόπιστο κώδικα από το να αποκτήσουν πρόσβαση σε προστατευόμενα μέλη της κατηγορίας που διαφορετικά θα ήταν προσβάσιμη σε απόγονος τάξεις.
Συχνά αυτό επιτυγχάνεται με τη χρήση [«Driven δεδομένων Συνδρομές»](https://msdn.microsoft.com/en-us/library/ms169673.aspx) , αλλά αυτή η λειτουργία είναι διαθέσιμη μόνο σε ορισμένες εκδόσεις του SQL: Enterprise και Business Intelligence, αλλά όχι στο πρότυπο.


Έτσι, υπάρχει μια σειρά από δημιουργικές λύσεις. Αλλά δεν μου αρέσει κάποια από αυτές, και απαιτούν ένα δίκαιο κομμάτι της εργασίας έξω από SSRS.


Οι λύσεις που έχω δει περιλαμβάνουν: Δημιουργία της εγγραφής και στη συνέχεια απενεργοποίηση ή επιτρέπουν την εργασία SQL που στέλνει τη συνδρομή (που προσδιορίζονται από GUID.)


Δημιουργήστε ένα .exe .NET περιτύλιγμα για να χειριστεί την αποστολή του email. Μπορεί να εκτελέσετε το ερώτημα πρώτα να δούμε πόσα επέστρεψε σειρές, και στη συνέχεια, αν χρειαστεί, να δημιουργήσει την έκθεση και να συμπεριληφθεί σε ένα email. Προσθέτοντας την `--decorate`επιλογή θα εμφανιστούν οι αναφορές που δείχνουν προς κάθε commit. Έτσι, για παράδειγμα, θα δείτε **HEAD** και **προέλευσης / HEAD** (ή οτιδήποτε άλλο) στις σωστές θέσεις.


Μπορούν ακόμη και να είναι σε αρκετά χρώματα, αν έχετε αυτό ενεργοποιηθεί.


PS. ευχαριστώ για να με κάνει να ελέγξετε αυτό - είναι πραγματικά πολύ ωραία, ειδικά με τον τρόπο που δείχνει επίσης διάφορες κρύπτες μου. καλό είναι να ξέρουμε και λιγάκι τι κάνουμε. το αρχείο /var/lib/pacman/db.lck υπάρχει ακριβώς για να κλειδώνει την βάση να μην γίνει γίνουν αλλαγές από δυο μεριές ταυτόχρονα. υπάρχει δηλαδή για ασφάλεια όταν ενημερώνουμε το σύστημα. μπορεί κάτι να στραβώσει και να ξεμείνει εκεί οπότε η λύση είναι πρ… Όχι, `index`είναι απλά ένα όνομα που έχει εκχωρηθεί για να δείξει το δείκτη. Πρακτικά και οι δύο τύποι είναι ίδιες. Αυτή είναι η γνώμη μου, αλλά? όπως ακριβώς και οι τάξεις περίπτωση δεν, θα ήθελα να εφαρμόσουν μια `copy`μέθοδο του είδους στην τάξη για να καταστεί δυνατή η τροποποίηση, διατηρώντας παράλληλα το αμετάβλητο, αλλά υπάρχει ορισμένες περιπτώσεις που δεν μπορώ να βοηθήσω να το μεταβλητό? Για παράδειγμα, όταν κάτι αναμένεται να γίνει η λειτουργία αντιγραφής είναι πολύ μεγάλη και αργή για την κατηγορία? όπως όταν η τάξη έχει τόσα πολλά συχνά τροποποιημένο μέλη. Και μην ανησυχείτε για χιλιάδες περιπτώσεις που επιπλέουν γύρω στη μνήμη, επειδή είναι αυτόματα GC'ed, οπότε το πιο πραγματικό πρόβλημα είναι ο χρόνος κόστος της αντιγραφής περιπτώσεις της κλάσης. Παρακαλώ πείτε μου εάν η γνώμη μου είναι κάπως λάθος :) κάτι έχει γίνει λάθος στην περίπτωσης σου διότι αυτή η μετάφραση χρησιμοποιείται σε αρκετές επαγγελματικές εγκαταστάσεις εταιρειών (με εξαίρεση κάποιες περιπτώσεις που είναι custom μεταφράσεις εξειδίκευσης π.χ. ιατρεία, οδοντιατρεία, δικηγορικά γραφεία και δεν είναι online) Η προτιμώμενη μέθοδος είναι να χρησιμοποιήσετε πραγματικά την ιδιότητα υπό όρους για να τυλίξει τις κλήσεις εντοπισμού σφαλμάτων σας, μην χρησιμοποιήσετε τις οδηγίες μεταγλωττιστή. #ifs μπορεί να πάρει δύσκολες και μπορεί να οδηγήσει σε περίεργα προβλήματα κατασκευής.


Ένα παράδειγμα της χρήσης ενός υπό όρους χαρακτηριστικό είναι η εξής (σε C #, αλλά λειτουργεί σε VB.NET πολύ):



```
[ Conditional("Debug") ]
private void WriteDebug(string debugString)
{
  // do stuff
}

```

Κατά τη μεταγλώττιση, χωρίς το σετ σημαία DEBUG, κάθε κλήση προς WriteDebug θα καταργηθούν όπως υποτίθεται συνέβαινε με Debug.Write (). δες ένα απόσπασμα με την εντολή της αποσύνδεσης για να καταλάβεις:

listdelegate {

id: leavebutton

text: i18n("log out")

highlight: delegatehighlight

icon: "system-log-out"

onclicked: {

ex… <p>το .net 4.0 επιτρέπει στα πρωτεύοντα σύνολα interop (ή μάλλον, τα bits που χρειάζεστε) να ενσωματωθούν στη συνέλευση σας, ώστε να μην χρειάζεται να τα αναπτύξετε παράλληλα με την εφαρμογή σας.</p><p>για οποιονδήποτε λόγο, αυτή η συνέλευση δεν μπορεί να ενσωματωθεί - αλλά αυτό ακούγεται σαν να μην είναι πρόβλημα για εσάς. ανοίξτε την καρτέλα ιδιότητες για τη συνέλευση στο visual studio 2010 και ορίστε "ενσωμάτωση τύπων interop" σε "false".</p><p>edit: δείτε επίσης την <a href="https://stackoverflow.com/a/4553402/641833">απάντηση</a> του michael gustus, καταργώντας το επίθημα <code>class</code> από τους τύπους που χρησιμοποιείτε.</p> Είσαι σίγουρος ότι δεν είναι μόνο το όριο παράδειγμα σχετικά με το λογαριασμό που μπορείτε εύκολα να ζητήσετε Amazon για την αύξηση;


Σύμφωνα με [τα έγγραφα](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types) , αυτά είναι τα μόνα είδη παράδειγμα περιορίζεται σε ένα VPC αυτή τη στιγμή:


* C4
* M4
* Τ2
* X1


Όλοι οι άλλοι τύποι παράδειγμα, θα πρέπει να εξακολουθεί να είναι διαθέσιμη στο EC2 Classic.