Mit jedem .Net Core- Update beweist Microsoft, dass .Net Core das leistungsstärkste, vielseitigste und vollständigste Framework für die Entwicklung leistungsstarker Desktop- , Mobil- , Cloud- und Webanwendungen ist . Im Gegensatz zu einer Desktop- oder Mobilanwendung wird eine Webanwendung unter einer öffentlichen Adresse ausgeführt. Dies ist einer der Gründe, warum die Sicherheit einer Webanwendung von großer Bedeutung ist. Obwohl Asp.Net Core unter Berücksichtigung der Best Practices für die Sicherheit entwickelt wurde , gibt es noch einige Schwachstellen , auf die wir vor und nach der Veröffentlichung unseres Asp.Net Core achten solltenAnwendungen.
In diesem Artikel werden wir an mehreren suchen Sicherheitslücken in Asp.Net Core - Web - Anwendungen und die möglichen Lösungen. Beginnen wir mit der Auflistung einiger wichtiger Sicherheitsaspekte für unsere .Net Core-Anwendung .
- Machen Sie Ihr Login sicherer
- Übertragen Sie sensible Daten nur verschlüsselt
- Denken Sie daran, Ihre Cookies beim Beenden zu löschen
- Verwenden Sie immer SSL
- Speichern Sie niemals vertrauliche Daten explizit in Ihrer Datenbank
- Audit Trails und Protokollierung sind sehr wichtig
- Setzen Sie dem Endbenutzer niemals technische Originalfehler aus
- Cross Site Scripting (XSS)
- Versuchen Sie, die Version Ihres .Net Core auszublenden
- Cross-Site Request Forgery (CSRF)
- LINQ kann vor SQL-Injection schützen
- Fügen Sie während der Deserialisierung Überprüfungen hinzu
- Halten Sie immer die Versionen Ihrer Frameworks und Bibliotheken auf dem neuesten Stand
1. Machen Sie Ihr Login sicherer
Die Anmeldeseite ist die Eingangstür jeder Anwendung. Stellen Sie sich eine Anwendung wie ein Admin-Panel vor. Wenn eine nicht autorisierte Person Zugriff auf Ihre Anwendung erhält, kann sie das gesamte System steuern. Daher sollte Ihr erster Schritt immer darin bestehen, Ihr Login sicherer zu machen.

Hier finden Sie einige Tipps zum Sichern des Einstiegspunkts Ihrer Anwendung.
VERWENDEN SIE KOMPLEXE KONTEN Verwenden Sie
niemals Benutzernamen wie admin und Passwörter wie 12345 oder Ihren Namen oder Ihre persönlichen Daten. Jeder kann diesen Fehler ausnutzen, und der Bot kann solche Anmeldeinformationen in unglaublich kurzer Zeit abrufen. SCHÜTZEN SIE
IHR LOGIN GEGEN
BRUTFORS Brute Force ist die häufigste Art von Angriff, bei der verschiedene Algorithmen verwendet werden, um Kombinationen aus Benutzername und Passwort zu erzwingenum die Anmeldeinformationen zu erraten. Darüber hinaus kann eine große Anzahl von Anmeldeversuchen Ihren Server überlasten, was zu DoS (Denial of Service) und Ausfallzeiten für die tatsächlichen Benutzer Ihrer Anwendung führen kann.
Brute-Force-Angriffe benötigen weniger Zeit, um einfache Benutzernamen und Kennwörter zu erraten. Sie können jedoch auch komplexe Kombinationen mithilfe trivialer Brute-Force- Angriffe erraten.
Wie schützen Sie Ihre Asp.Net-Anwendung vor Brute-Force-Angriffen?
Hier einige Tipps, um Brute-Force-Angriffe zu verhindern :
- Verwenden Sie Captcha auf Ihrer Anmeldeseite, da Bots noch keine Captchas verarbeiten können.
- IP .
- , admin user, .
- , (A-Z a-z), (0-9) (!, @,., #, $,%, ^, &, * ..).
Wie werden die oben genannten Empfehlungen umgesetzt?
Die oben genannten Richtlinien scheinen für Asp.Net Core- Anfänger schwierig zu implementieren , aber keine Sorge, es gibt eine hervorragende HackerSpray- Bibliothek, mit der Sie Ihre Arbeit vor Brute-Force-Angriffen schützen können . Alles was Sie tun müssen, ist es zu konfigurieren.
VERWENDEN
SIE IMMER DIE .NET-KERN-IDENTITÄT Asp.Net Core verfügt über viele integrierte Bibliotheken und Tools zum Sichern Ihrer Anwendungen. Die Autorisierung hat auch eine wunderbare Implementierung von Microsoft , mit der wir die Anmeldung und Registrierung gemäß den Best Practices für die Sicherheit vollständig anpassen können.
2. Übertragen Sie sensible Daten nur in verschlüsselter Form
Senden Sie niemals vertrauliche Informationen wie Kennwörter oder Kreditkarteninformationen explizit zur Überprüfung an den Server. Hacker können diese Daten stehlen, indem sie sie abfangen , bevor sie an den Server gesendet werden.
Verwenden Sie immer einen Hashing- Algorithmus wie md5 oder SHA256 für Kennwörter und Verschlüsselungsalgorithmen wie AES oder DES auf der Clientseite, z. B. mit jQuery .

3. Denken Sie daran, Cookies beim Beenden zu löschen
Bei der Anmeldung bei der Asp.Net Core- Anwendung speichern wir einige erforderliche Daten in der Sitzung , um die Anmeldung des Benutzers bis zur Abmeldung aufrechtzuerhalten. In einigen Anwendungen legen wir das Sitzungszeitlimit fest , manchmal jedoch nicht, wenn der Benutzer das Kontrollkästchen aktiviert und angibt, dass er auf der Anmeldeseite angemeldet bleiben möchte.
Gleichzeitig wird dem Browser das AspNetCore.Session-Cookie hinzugefügt, um den angemeldeten Benutzer zu verfolgen .
Daher müssen wir beim Abmelden auch die von unserer Anwendung erstellten Cookies aus dem Browser entfernen , da der Hackerkann diese Informationen für nicht autorisierte Anmeldungen verwenden. Dies wird auch als Sitzungsfixierungsangriff bezeichnet .
4. Verwenden Sie immer SSL
SSL steht für Secure Socket Layer . Es verschlüsselt die Kommunikation zwischen Client und Server mit einem sehr komplexen Schlüssel.
Sie können Starup.cs Ihrer Asp.Net Core- Anwendung einfach anweisen, immer eine sichere Cookie-Richtlinie zu verwenden.

5. Speichern Sie niemals vertrauliche Daten explizit in Ihrer Datenbank
Fast jede Webanwendung zum Speichern von Benutzerdaten benötigt eine Datenbank , die Hacker in den meisten Fällen genau angreifen, um diese Benutzerdaten zu stehlen. Angenommen, Sie speichern die Anmeldeinformationen Ihrer Benutzer wie Kennwörter und Abrechnungsspezifikationen detailliert und sauber in Ihrer Datenbank. Es stellt sich heraus, dass jeder, der unbefugten Zugriff auf Ihre Datenbank erhält, diese Daten für seine eigenen egoistischen Zwecke verwenden kann.
Speichern Sie daher vertrauliche Daten immer mithilfe von Hashing oder Verschlüsselung in Ihrer Datenbank .

6. Audit Trails und Protokollierung sind sehr wichtig
Audit-Trails oder Aktivitätsprotokolle sind sehr wichtig, um auf dem Laufenden zu bleiben, was in Ihrer Anwendung vor sich geht. Wenn jemand eine große Anzahl fehlgeschlagener Anmeldeversuche generiert , sollte der Administrator eine E-Mail erhalten, die ihn darüber informiert.
Unabhängig davon, ob ein Benutzer eine neue Instanz eines Anwendungsbenutzers erstellt oder die Rollen einer vorhandenen ändert, sollte jede Aktion in den Protokollen Ihrer Asp.net Core-Anwendung angezeigt werden .
7. Setzen Sie dem Endbenutzer niemals ursprüngliche technische Fehler aus.
Einige Ausnahmen können wichtige Informationen zu Ihrer Anwendung enthalten oder dem Endbenutzer manchmal sogar einige Codezeilen anzeigen. Die Angreifer sind kluge Kerle. Sie können die von Ihrer Ausnahme bereitgestellten Informationen verwenden, um Ihre Anwendung zu hacken.
Stellen Sie daher vor dem Bereitstellen der Anwendung für die Produktion sicher, dass Sie eine Seite erstellt haben, auf der der Fehler für alle Arten von Ausnahmen dem Benutzer angezeigt wird, und speichern Sie die Fehler korrekt im Protokoll Ihrer Anwendung.
8. Cross Site Scripting (XSS)
Bei XSS- Angriffen (Cross-Site Scripting) senden Hacker schädliche Skripte über Eingabefelder, um Benutzeranmeldeinformationen und andere vertrauliche Daten zu stehlen.
Angenommen, wir haben ein Formular zum Hinzufügen eines Produkts zu einer Anwendung. Der Hacker fügt ein neues Produkt hinzu und fügt im Feld Produktbeschreibung einfach ein JavaScript- Code-Snippet ein. Wenn unsere Anwendung dieses Produkt auf der Produktbeschreibungsseite anzeigt, wird auch das schädliche Skript des Hackers ausgeführt und es erhält die benötigten Daten.
Ich habe das Bild unten im XSS-Artikel zu Cloudflare gefunden . Auf diese Weise können Sie XSS einfacher einreichen.
Wie können wir unsere Asp.Net Core-Anwendung vor Cross-Site-Scripting-Angriffen schützen?
Sie können Ihre Webanwendung wie folgt sichern:
- Verwenden Sie sowohl clientseitig als auch serverseitig reguläre Ausdrücke und speichern Sie nur validierte Daten in Ihrer Datenbank .
- Die HTML-Verschlüsselung mit Razor hilft bei der Handhabung solcher Skripte.
- XXS kann auch mit URL-Verschlüsselung durchgeführt werden. Überprüfen Sie daher die URL-Parameter und verschlüsseln Sie sie mit UrlEncoder .
Hier ist ein großartiger Artikel von Microsoft zum Schutz Ihrer Anwendung vor XSS.
9. Versuchen Sie, Ihre .Net Core-Version auszublenden
In jeder HTTP-Antwort vom Server, die wir als Antwort auf unsere vom Browser gesendete Anfrage erhalten, sind immer Informationen über die Version enthalten, auf der die Anwendung entwickelt wurde. Solche Informationen erleichtern einem Angreifer die Arbeit , sparen ihm Zeit und ermöglichen es ihm, auf eine bestimmte Version von .Net abzuzielen .
Es ist notwendig, mehr Hindernisse für Hacker zu schaffen und ihre Arbeit zu erschweren, indem Informationen über die Version des .Net Frameworks ausgeblendet werden .
So verstecken Sie die .Net Core- Version :
- Entfernen Sie X-Powered-By aus dem Antwortheader.
- <a
href="https://www.nuget.org/packages/NWebsec.AspNetCore.Middleware/">NWebsec.AspNetCore.Middleware
Installieren
AddServerHeader = false, um den Server: Kestrel-Header zu entfernen.
Sie können X-Powered-By mit diesem einfachen Code-Snippet in Ihrem entfernen
web.config
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
10. Cross-Site Request Forgery (CSRF)
Kennen Sie den Zweck des Attributs
[ValidateAntiForgeryToken]in Ihren .Net Core-Web-APIs ? Vielleicht haben Sie auch den Code asp-antiforgery="true"in Ihrer cshtmlDatei bemerkt ?
Zuerst müssen wir CSRF (Cross-Site Request Forgery oder XSRF) verstehen, dann werden wir versuchen, den Zweck des obigen Tags und Attributs zu verstehen.
Angenommen, Sie verwenden E-Banking von Ihrem Bankkonto, um Geld an Ihren Freund zu senden, und plötzlich erhalten Sie einen FaceBook- Link von einer Frau mit einem hübschen Avatar. Wenn Sie diesen Link öffnen, werden Sie aufgefordert, hier zu klicken, um 1000 US-Dollar zu verdienen... Sie klicken einfach auf und da Sie angemeldet und zur Nutzung Ihres E-Banking berechtigt sind, führt dieser böswillige Link ein Skript aus und sendet Geld von Ihrem Konto an das Konto des Hackers.
Das Bild unten zeigt deutlich CSRF.
Wie können Sie Ihre Anwendung vor CSRF schützen?
asp-antiforgery="true"Erstellt ein Fälschungsschutz-Token und [ValidateAntiForgeryToken]überprüft auf der Serverseite, ob das Token gültig ist, und schützt Sie vor Fälschungen von standortübergreifenden Anforderungen .
11. LINQ kann vor SQL-Injection schützen
Die SQL-Injection ist eine der am häufigsten verwendeten Techniken, um Benutzerdaten über viele Jahre hinweg zu schädigen.
Bei dieser Methode fügt der Hacker einige bedingte oder spezielle Zeichen in das Eingabefeld ein, wodurch die gesamte Anforderung geändert wird.
Hier ist ein gutes Beispiel für die SQL-Injection .

Wie schützen Sie Ihre Asp.Net Core-Anwendung vor SQL-Injection?
Hier sind einige Tipps:
- Verwenden Sie Entity Framework Core
- Verwenden Sie immer parametrisierte Abfragen.
- Überprüfen Sie immer die serverseitige Eingabe.
- Verwenden Sie gespeicherte Prozeduren.
12. Fügen Sie während der Deserialisierung Überprüfungen hinzu
Deserialisierung ist das Gegenteil von Serialisierung, bei der ein Objekt in Byteströme konvertiert wird. Die Serialisierung wird immer auf der Serverseite durchgeführt, um Objekte zu übertragen oder zu speichern, und wir deserialisieren die in unserer Anwendung empfangenen Daten aus verschiedenen Quellen.

Wir sind also offen für viele schädliche Ströme.
Um Ihre Anwendung vor Angreifern zu schützen, müssen wir die Daten vor und nach der Deserialisierung überprüfen.
13. Halten Sie immer die Versionen Ihrer Frameworks und Bibliotheken auf dem neuesten Stand
Aktualisieren Sie immer die in Ihrem Projekt verwendeten Frameworks und Bibliotheken . Verwenden Sie niemals veraltete Bibliotheken in Ihrem Projekt, da Angreifer ständig Schwachstellen in ihnen finden.
Suchen Sie nach Updates für die in Ihrem Projekt verwendeten NuGet-Pakete und aktualisieren Sie diese regelmäßig.

FAZIT
Nichts ist 100% sicher, aber wir müssen unsere Anwendung so sicher wie möglich machen, indem wir Best Practices befolgen. Obwohl .Net Core als eine der sichersten Plattformen gilt, müssen wir die Aktivitäten in unserer Anwendung überwachen und im Falle böswilliger Aktivitäten schnell Maßnahmen ergreifen.
Vielen Dank, dass Sie meinen Artikel gelesen haben. Ich hoffe, er motiviert Sie, darüber nachzudenken, Ihre Asp.Net Core- Anwendung sicherer zu machen .
Ich würde mich freuen, wenn Sie Ihr Feedback im Kommentarbereich unten hinterlassen möchten.
Hier sind einige weitere Artikel, die Sie interessieren könnten:
- TOP OPEN SOURCE ASP.NET-KERNINHALTSSYSTEM (CMS)
- ERSTELLEN VON DYNAMISCHEN BENUTZERDEFINIERTEN DASHBOARDS MIT ASP.NET CORE
- VERWENDUNG DER NOSQL-DATENBANK MIT DOTNET-KERNBEISPIEL
Erfahren Sie mehr über den Kurs