2013-06-20 11 views
11

All Seite meines Projektes benötigt Authentifizierung .. Und ich nicht Normalerweise [ValidateAntiForgeryToken] and @Html.AntiForgeryToken() auf meinem Controller verwenden und anzeigen .. Nur Login-Seite hat es ..Muss ich auf allen meinen Seiten `[ValidateAntiForgeryToken] und @ Html.AntiForgeryToken()` verwenden?

  1. Was sind sie [ValidateAntiForgeryToken] and @Html.AntiForgeryToken() ??
  2. Muss ich sie verwenden ??
  3. Welche cookieless muss ich verwenden ??

Mein web.config Teil wie folgt;

<authorization> 
    <deny users="?" /> 
</authorization> 
<authentication mode="Forms"> 
    <forms loginUrl="~/User/Login" timeout="30" cookieless="UseDeviceProfile" name="AbosSMSP" /> 
</authentication> 

Mein Fehler wie diese; My error like this

Antwort

19

Denken Sie an das Anti-Forgertoken ist ein Weg, um sicherzustellen, dass die Anfrage, die zu einer Post-Aktion kommt, tatsächlich eine ist, die aus Ihrer ausgegebenen Ansicht stammt. Es stoppt Cross-Site-Scripting-Angriffe und ich denke, es behandelt auch Post-Replay-Angriffe.

Das Sichern der Haustür zu Ihrer Anwendung ist ein guter Anfang, es stoppt Menschen, die ihre Daten mit roher Gewalt gestohlen haben, jedoch stoppt es nicht alle Arten von Angriffen. Dinge wie Social Engineering und Phishing können jemanden auf Ihrer Seite hereinlassen, ohne dass sie die Anmeldeseite durchbrechen.

Sobald es soweit ist, gibt es alle Arten von Gemeinheiten, die sie bewältigen können. Sehen Sie sich daher die OSWAP-Empfehlungen an und prüfen Sie, ob andere Angriffe für Sie anfällig sind. Wenn Sie Zweifel haben, können Sie Ihren Site-Pen von ethischen Hackern für ein paar hundert Stirling testen lassen, wenn Sie sich um sensible Daten kümmern, dann würde ich das empfehlen, da sie Dinge aufziehen, die Sie vielleicht gar nicht haben Denk an.

Meine Top-Tipps für die Sicherheit

  1. Antiforgerytoken auf der Login-Seite
  2. Langsam alle Authentifizierungsversuche von mindestens einem zweiten nach unten (macht Brute-Force-unpraktisch)
  3. ein Konto Umsetzung der Verfahren auf n aussperren Mengen von ungültigen Anmeldungen
  4. immer eine generische Fehlermeldung auf dem fehlgeschlagenen Logins verwenden Hacker zu verhindern, zu wissen, welche
  5. immer verschlüsselt falsch ist Ihr Teil eines Login Passwörter in der DB mit einem Salz, sollten das Salz pro Benutzer sein, eine Rainbow-Attacke auf einem gestohlenen Datenbank
  6. Achten Sie immer darauf, dass alle Daten angezeigt oder abgerufen zu verhindern, gilt für diesen Benutzer
  7. immer parametrisierte SQL verwendet
  8. versuchen Sie, und verschleiern die IDs übergeben um in Ihre Urls und Ansichten Änderung oder den Versuch einer direkten Bezug Angriff

im Anschluss an das zu verhindern, ich glaube, Sie ohne Abdeckung werden die meisten von dem, was ein Pen-Test erhöhen würde, und legen Sie auf eine gute Stelle für eine sichere Seite

+2

Es ist aus das Thema des OP, aber diese ausgezeichnete Liste lässt eine grundlegende zur Verhinderung von Exploits einschließlich XSS (und damit auch XSRF): entkommen alle nicht vertrauenswürdigen Daten für den Ausführungskontext, zu dem es ausgegeben wird.Die ursprüngliche Quelle für dieses PDF hat viel zusätzliche Weisheit: https://www.owasp.org/index.php/Top_10_2013-Top_10. Unter "Bin ich anfällig für Cross-Site Scripting (XSS)"? und "Wie verhindere ich Cross-Site Scripting (XSS)"? unter https://www.owasp.org/index.php/Top_10_2013-A3-Cross-Site_Scripting_(XSS). – weir

+3

P.S. Während MVC weit besser ist als WebForms, um Entwicklern zu helfen, richtig zu entkommen, ist das Bewusstsein der Entwickler weiterhin kritisch. Zum Beispiel ist es Aufgabe des Entwicklers, ein nicht vertrauenswürdiges JavaScript-Literal mit @ [Encoder/Ajax] .JavaScriptEncode zu umbrechen. Siehe http://weblogs.asp.net/jgalloway/archive/2011/04/28/preventing-javascript-encoding-xss-attacks-in-asp-net-mvc.aspx. Weitere Informationen finden Sie in den Links unter "Sichern von ASP.NET MVC-Anwendungen" unter http://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx. – weir

+1

Passwörter nicht verschlüsseln, sie sollten immer mit einem langsamen Hash-Mechanismus wie PBKF2 gehashed werden – Shekhar