Έλεγχος Ασφάλεια Εφαρμογών του .NET Web Application;




Όποιος έχει προτάσεις για τον έλεγχο της ασφάλειας ενός Web Application .NET;


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


ΕΠΕΞΕΡΓΑΣΙΑ:


Για να διευκρινιστεί, το σύστημα έχει σχεδιαστεί με γνώμονα την ασφάλεια. Το περιβάλλον έχει ρυθμιστεί με γνώμονα την ασφάλεια. Θέλω ένα ανεξάρτητο μέτρο της ασφάλειας, εκτός από - «ναι αυτό είναι ασφαλές» ... Το κόστος του να έχεις κάποιον έλεγχο 1M + γραμμές κώδικα είναι ίσως πιο ακριβά από ό, τι την ανάπτυξη. Μοιάζει πραγματικά δεν είναι μια καλή αυτοματοποιημένη / ανέξοδη προσέγγιση σε αυτό ακόμα. Ευχαριστώ για τις προτάσεις σας.


Το σημείο του ελέγχου ήταν να ελέγξει ανεξάρτητα την ασφάλεια που τέθηκε σε εφαρμογή από την ομάδα.


BTW - υπάρχουν διάφορα αυτοματοποιημένα εργαλεία hack / αισθητήρα για την ανίχνευση διακομιστές εφαρμογών / ιστοσελίδων, αλλά είμαι λίγο ανησυχούν για το αν είναι σκουλήκια ή όχι ...
**Καλύτερο που έχετε να κάνετε:**


* Η μίσθωση ενός άντρα ασφαλείας για την ανάλυση του πηγαίου κώδικα
* Δεύτερο καλύτερο πράγμα που κάνει την πρόσληψη ενός / pentesting εταιρεία τύπος ασφαλείας για την ανάλυση μαύρο κουτί


**Μετά τα εργαλεία θα βοηθήσουν:** 


* Στατική Εργαλεία Ανάλυσης οχυρώσουν Εργαστήρια / ουγγιά - Κωδικός κριτική
* Σκεφτείτε λύσεις όπως είναι η ασφαλής αντικείμενο (VS.NET addon) WebInspects της HP
* Αγοράζοντας ένα σαρωτή εφαρμογή blackbox όπως Netsparker, AppScan, WebInspect, Hailstorm, Acunetix ή δωρεάν έκδοση του [Netsparker](http://www.mavitunasecurity.com/communityedition/)


Πρόσληψη κάποιο ειδικό ασφάλειας είναι πολύ καλύτερη ιδέα (θα κοστίσει περισσότερο αν) επειδή δεν θα βρείτε μόνο ένεση και τεχνικά ζητήματα, εφόσον ένα αυτοματοποιημένο εργαλείο για να βρείτε, θα βρείτε επίσης όλα τα λογικά θέματα.
Κάνατε πολύ καλή δουλειά στο να συνοψίσετε τι είναι φοβερό στο Node.js. Η αίσθησή μου είναι ότι το Node.js είναι ιδιαίτερα κατάλληλο για εφαρμογές όπου θα θέλατε να διατηρήσετε μια μόνιμη σύνδεση από το πρόγραμμα περιήγησης πίσω στον διακομιστή. Χρησιμοποιώντας μια τεχνική γνωστή ως ["long-polling"](https://en.wikipedia.org/wiki/Push_technology#Long_polling), μπορείτε να γράψετε μια εφαρμογή που στέλνει ενημερώσεις στον χρήστη σε πραγματικό χρόνο. Η πραγματοποίηση long polling σε πολλούς από τους γίγαντες του διαδικτύου, όπως το [Ruby on Rails](https://en.wikipedia.org/wiki/Ruby_on_Rails) ή το [Django](https://en.wikipedia.org/wiki/Django_%28web_framework%29), θα δημιουργούσε τεράστιο φόρτο στον διακομιστή, επειδή κάθε ενεργός πελάτης τρώει μια διεργασία του διακομιστή. Αυτή η κατάσταση ισοδυναμεί με επίθεση [tarpit](https://en.wikipedia.org/wiki/Tarpit_(networking)). Όταν χρησιμοποιείτε κάτι όπως το Node.js, ο διακομιστής δεν έχει ανάγκη να διατηρεί ξεχωριστά νήματα για κάθε ανοιχτή σύνδεση. 


Αυτό σημαίνει ότι μπορείτε να δημιουργήσετε μια [εφαρμογή συνομιλίας με βάση το πρόγραμμα περιήγησης](https://github.com/rivalslayer/node_chat) σε Node.js που δεν χρειάζεται σχεδόν καθόλου πόρους συστήματος για να εξυπηρετεί πολλούς πελάτες. Κάθε φορά που θέλετε να κάνετε αυτού του είδους τη μακροχρόνια αναζήτηση, το Node.js είναι μια εξαιρετική επιλογή. 


Αξίζει να αναφέρουμε ότι και η Ruby και η Python έχουν εργαλεία για να κάνουν κάτι τέτοιο ([eventmachine](http://rubyeventmachine.com/) και [twisted](https://twistedmatrix.com/trac/), αντίστοιχα), αλλά ότι το Node.js το κάνει εξαιρετικά καλά, και από την αρχή. Η JavaScript είναι εξαιρετικά καλά τοποθετημένη σε ένα μοντέλο ταυτόχρονης λειτουργίας βασισμένο σε callback, και υπερέχει εδώ. Επίσης, η δυνατότητα σειριοποίησης και αποσειριοποίησης με JSON εγγενές τόσο στον πελάτη όσο και στον διακομιστή είναι αρκετά έξυπνη.


Ανυπομονώ να διαβάσω άλλες απαντήσεις εδώ, αυτή είναι μια φανταστική ερώτηση.


Αξίζει να επισημάνουμε ότι το Node.js είναι επίσης εξαιρετικό για καταστάσεις στις οποίες θα επαναχρησιμοποιήσετε πολύ κώδικα σε όλο το χάσμα πελάτη/εξυπηρετητή. Το [Meteor framework](https://meteor.com) το κάνει αυτό πολύ εύκολο, και πολλοί άνθρωποι προτείνουν ότι αυτό μπορεί να είναι το μέλλον της ανάπτυξης ιστοσελίδων. Μπορώ να πω από την εμπειρία μου ότι είναι πολύ διασκεδαστικό να γράφεις κώδικα στο Meteor, και ένα μεγάλο μέρος αυτού είναι να ξοδεύεις λιγότερο χρόνο σκεπτόμενος πώς θα αναδομήσεις τα δεδομένα σου, ώστε ο κώδικας που εκτελείται στο πρόγραμμα περιήγησης να μπορεί εύκολα να τα χειριστεί και να τα μεταβιβάσει πίσω.


Εδώ είναι ένα άρθρο για το Pyramid και το long-polling, το οποίο αποδεικνύεται ότι είναι πολύ εύκολο να ρυθμιστεί με λίγη βοήθεια από το gevent: [*TicTacToe και Long Polling με την Pyramid*](http://michael.merickel.org/2011/6/21/tictactoe-and-long-polling-with-pyramid/). Η προτιμώμενη μέθοδος είναι να χρησιμοποιήσετε πραγματικά την ιδιότητα υπό όρους για να τυλίξει τις κλήσεις εντοπισμού σφαλμάτων σας, μην χρησιμοποιήσετε τις οδηγίες μεταγλωττιστή. #ifs μπορεί να πάρει δύσκολες και μπορεί να οδηγήσει σε περίεργα προβλήματα κατασκευής.


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



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

```

Κατά τη μεταγλώττιση, χωρίς το σετ σημαία DEBUG, κάθε κλήση προς WriteDebug θα καταργηθούν όπως υποτίθεται συνέβαινε με Debug.Write (). είναι αλήθεια ότι μου πέρασε κάποια στιγμή από το μυαλό να “σηκώσω” ένα arch δοκιμαστικά κατ αρχήν στο netbook (μάλλον επηρεάστηκα από τον [@billniakas](/u/billniakas)) αλλά φοβήθηκα ότι “τα νερά θα είναι βαθειά” :blush:. αφού όλα δουλεύουν το αφήνω για αργότερα όταν, και αν, ξαναδημιουργηθεί πρόβλημα.

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


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


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


Δημιουργήστε ένα .exe .NET περιτύλιγμα για να χειριστεί την αποστολή του email. Μπορεί να εκτελέσετε το ερώτημα πρώτα να δούμε πόσα επέστρεψε σειρές, και στη συνέχεια, αν χρειαστεί, να δημιουργήσει την έκθεση και να συμπεριληφθεί σε ένα email. Θα πρέπει να δώσετε περισσότερες πληροφορίες σχετικά με το περιβάλλον ανάπτυξής σας για να πάρετε μια συγκεκριμένη απάντηση.


Για παράδειγμα, με ένα C # έργο στο Visual Studio, μπορείτε να κάνετε δεξί κλικ στα Project-> Ιδιότητες και, στη συνέχεια, να συμπληρώσετε το πεδίο «Εντολή επιχειρήματα γραμμή» στην καρτέλα «Debug». Από τα περαιτέρω σχόλια που έγιναν από τον συγγραφέα, που ψάχνουν για ένα Node.js ORM που λειτουργεί με δύο οδηγούς MySQL και Oracle.


Εκεί δεν φαίνεται να είναι πολλά ΝΤΥΠΑ που ταιριάζει η περιγραφή και είναι επίσης υποστηρίζονται (προειδοποίηση - βασίζονται αποκλειστικά σε λίγες αναζητήσεις του Google).


Υπάρχει μία διαπίστωσα ότι ταιριάζει με την περιγραφή αν και ακόμα φαίνεται να υποστηρίζεται ενεργά και ότι είναι knex (βλ <https://knexjs.org> ). Συνήθως δεχόμαστε είτε "have to" είτε "must". Στείλτε μας, παρακαλώ, ένα συγκεκριμένο παράδειγμα που μπορούμε να ελέγξουμε για λάθοι. δυστυχώς δε μπόρεσα να το βρώ. θέλω να πω ο,τι δεν είδα πως το λάθος ήταν στη γραμμή 4.

κατέβασα τον netsurf τελικώς με πατέντα.

μετά από αυτό που έπαθα πριν με τον brave δε θέλω να ρισκάρω ξανά.

ισως αργότερα αλλά όχι τώρα.

edit: εκεί που εγκαθιστούσα web browsers και αφού έχουν προηγηθεί τα πα… <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> Θα χρησιμοποιηθεί για να πάρει αυτό - νομίζω ότι είναι ένα bug με το παράθυρο εντοπισμού σφαλμάτων «Autos»:


[http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/](https://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/eabc58b1-51b2-49ce-b710-15e2bf7e7516/)