Kurse:Controllers und Schwachstellen:Hauptseite: Unterschied zwischen den Seiten

Aus ahrensburg.city
(Unterschied zwischen Seiten)
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
// via Wikitext Extension for VSCode
 
Zeile 1: Zeile 1:
= Einführung in Controller =
==Schwachstellen==
Ein Controller ist eine Klasse, die verwendet wird, um eine Reihe von Aktionen (oder Aktionsmethoden) zu gruppieren.
===Sprachmodell===
Aktionsmethoden führen eine bestimmte Operation aus, wenn eine Anfrage empfangen wird, und geben das Ergebnis (Antwort) zurück.
* [https://airiskdatabase.com AI Risk Database] – Eine Datenbank mit Risiken und Schwachstellen im Bereich Künstliche Intelligenz.
 
* [https://github.com/advisories GitHub CVE & Security Advisories] – Offizielle Sicherheitswarnungen und CVE-Meldungen von GitHub für Open-Source-Projekte.
== Controller erstellen ==
* [https://cve.mitre.org/ MITRE CVE Database] – Zentrale Datenbank für öffentlich bekannte Schwachstellen (Common Vulnerabilities and Exposures, CVE).
Controller sollten eines oder beides erfüllen:
* [https://nvd.nist.gov/ National Vulnerability Database (NVD)] – Die US-amerikanische nationale Datenbank für Schwachstellen, gepflegt vom NIST.
 
* [https://www.cvedetails.com/ CVE Details] – Eine benutzerfreundliche Übersicht und Analyse von CVE-Einträgen.
Der Klassenname sollte mit "Controller" enden. Bsp: <code>HomeController</code>
* [https://www.exploit-db.com/ Exploit Database] – Sammlung von Exploits und Proof-of-Concept-Code für bekannte Schwachstellen.
Das <code>[Controller]</code>-Attribut wird auf die Klasse selbst oder auf ihre Basisklasse angewendet.
* [https://www.securityfocus.com/vulnerabilities SecurityFocus Vulnerability Database] – Archiv von Schwachstellen und Sicherheitsmeldungen.
<source lang="csharp">
* [https://www.openwall.com/lists/oss-security/ Open Source Security (oss-security)] – Mailingliste und Archiv zu Schwachstellen in Open-Source-Software.
[Controller]
* [https://vuldb.com VulDB] – Community-basierte Schwachstellendatenbank mit aktuellen Informationen und Analysen.
class KlassenNameController
* [https://www.zerodayinitiative.com/advisories/published/ Zero Day Initiative Advisories] – Veröffentlichte Schwachstellen und Exploits aus dem Zero Day Initiative Programm.
{
// Aktionsmethoden hier
}
</source>
 
'''Optional:'''
 
Ist eine öffentliche (<code>public</code>) Klasse.
Erbt von <code>Microsoft.AspNetCore.Mvc.Controller</code>.
== 'Routing' in Controllern aktivieren ==
'''AddControllers( )'''
 
<source lang="csharp">
builder.Services.AddControllers();
</source>
Fügt alle Controller als Dienste zur <code>IServiceCollection</code> hinzu.
So kann auf sie zugegriffen werden, wenn ein bestimmter Endpunkt sie benötigt.
 
'''MapControllers()'''
 
<source lang="csharp">
app.MapControllers();
</source>
Fügt alle Aktionsmethoden als Endpunkte hinzu.
Dadurch entfällt die Notwendigkeit, die <code>UseEndPoints()</code>-Methode zu verwenden, um Aktionsmethoden als Endpunkte hinzuzufügen.
 
== Verantwortlichkeiten von Controllern ==
 
'''Anfragen lesen''' ** Extrahieren von Datenwerten aus der Anfrage, wie z.B. Query-String-Parameter, Anfragekörper (Request Body), Anfrage-Cookies, Anfrage-Header usw.
'''Modelle aufrufen''' ** Aufrufen von Geschäftslogik-Methoden. Geschäftsoperationen sind in der Regel als 'Dienste' (Services) verfügbar.
'''Validierung''' ** Validieren eingehender Anfragedetails (Query-String-Parameter, Anfragekörper, Anfrage-Cookies, Anfrage-Header usw.)
'''Antwort vorbereiten''' ** Auswählen, welche Art von Antwort an den Client gesendet werden soll, und Vorbereiten der Antwort (Aktionsergebnis).
=== ContentResult ===
Ein <code>ContentResult</code> kann jeden Antworttyp repräsentieren, basierend auf dem angegebenen MIME-Typ.
Der MIME-Typ repräsentiert den Typ des Inhalts, wie z.B. <code>text/plain</code>, <code>text/html</code>, <code>application/json</code>, <code>application/xml</code>, <code>application/pdf</code> usw.
 
<source lang="csharp">
return new ContentResult() { Content = "Inhalt", ContentType = "Inhaltstyp" };
// [oder]
return Content("Inhalt", "Inhaltstyp");
</source>
 
=== JsonResult ===
Ein <code>JsonResult</code> kann ein Objekt im JavaScript Object Notation (JSON)-Format repräsentieren.
Bsp: <code>{ "firstName": "James", "lastName": "Smith", "age": 25 }</code>
 
<source lang="csharp">
return new JsonResult(ihr_objekt);
// [oder]
return Json(ihr_objekt);
</source>
 
== Dateiergebnisse (File Results) ==
Ein Dateiergebnis sendet den Inhalt einer Datei als Antwort.
Bsp: PDF-Datei, TXT-Datei, EXE-Datei, ZIP-Datei usw.
 
=== VirtualFileResult ===
 
<source lang="csharp">
return new VirtualFileResult("relativer/dateipfad", "inhaltstyp");
//oder
return File("relativer/dateipfad", "inhaltstyp");
</source>
Repräsentiert eine Datei innerhalb des WebRoot-Ordners (standardmäßig 'wwwroot').
Wird verwendet, wenn sich die Datei im WebRoot-Ordner befindet.
 
=== PhysicalFileResult ===
Repräsentiert eine Datei, die nicht notwendigerweise Teil des Projektordners ist.
Wird verwendet, wenn sich die Datei außerhalb des WebRoot-Ordners befindet.
 
<source lang="csharp">
return new PhysicalFileResult("absoluter/dateipfad", "inhaltstyp");
//oder
return PhysicalFile("absoluter/dateipfad", "inhaltstyp");
</source>
 
=== FileContentResult ===
Repräsentiert eine Datei aus einem <code>byte[]</code>.
Wird verwendet, wenn ein Teil der Datei oder ein <code>byte[]</code> aus einer anderen Datenquelle als Antwort gesendet werden muss.
 
<source lang="csharp">
return new FileContentResult(byte_array, "inhaltstyp");
//oder
return File(byte_array, "inhaltstyp");
</source>
 
== IActionResult ==
Es ist die übergeordnete Schnittstelle (Interface) für alle Aktionsergebnis-Klassen wie <code>ContentResult</code>, <code>JsonResult</code>, <code>RedirectResult</code>, <code>StatusCodeResult</code>, <code>ViewResult</code> usw.
Indem der Rückgabetyp als <code>IActionResult</code> angegeben wird, können Sie jeden der Untertypen von <code>IActionResult</code> zurückgeben.
 
== Statuscode-Ergebnisse (Status Code Results) ==
Ein Statuscode-Ergebnis sendet eine leere Antwort mit dem angegebenen Statuscode.
Bsp: 200, 400, 401, 404, 500 usw.
 
=== StatusCodeResult ===
Repräsentiert eine Antwort mit dem angegebenen Statuscode.
Wird verwendet, wenn Sie einen bestimmten HTTP-Statuscode als Antwort senden möchten.
 
<source lang="csharp">
return new StatusCodeResult(status_code);
//oder
return StatusCode(status_code);
</source>
 
=== UnauthorizedResult ===
Repräsentiert eine Antwort mit dem HTTP-Statuscode '401 Unauthorized'.
Wird verwendet, wenn der Benutzer nicht autorisiert (nicht angemeldet) ist.
 
<source lang="csharp">
return new UnauthorizedResult();
//oder
return Unauthorized();
</source>
 
=== BadRequestResult ===
Repräsentiert eine Antwort mit dem HTTP-Statuscode '400 Bad Request'.
Wird verwendet, wenn die Anfragewerte ungültig sind (Validierungsfehler).
 
<source lang="csharp">
return new BadRequestResult();
//oder
return BadRequest();
</source>
 
=== NotFoundResult ===
Repräsentiert eine Antwort mit dem HTTP-Statuscode '404 Not Found'.
Wird verwendet, wenn die angeforderten Informationen auf dem Server nicht verfügbar sind.
 
<source lang="csharp">
return new NotFoundResult();
//oder
return NotFound();
</source>
 
== Umleitungsergebnisse (Redirect Results) ==
Ein Umleitungsergebnis sendet entweder eine HTTP 302- oder 301-Antwort an den Browser, um auf eine bestimmte Aktion oder URL umzuleiten.
Bsp: Umleitung von 'action1' zu 'action2'.
 
=== RedirectToActionResult ===
Repräsentiert eine Antwort zur Umleitung von der aktuellen Aktionsmethode zu einer anderen Aktionsmethode, basierend auf dem Aktionsnamen und dem Controllernamen.
 
'''302 - Found'''
 
<source lang="csharp">
return new RedirectToActionResult("action", "controller", new { route_values });
//oder
return RedirectToAction("action", "controller", new { route_values });
</source>
 
'''301 - Moved Permanently'''
 
<source lang="csharp">
return new RedirectToActionResult("action", "controller", new { route_values }, true);
//oder
return RedirectToActionPermanent("action", "controller", new { route_values });
</source>
 
=== LocalRedirectResult ===
Repräsentiert eine Antwort zur Umleitung von der aktuellen Aktionsmethode zu einer anderen lokalen URL.
 
'''302 - Found'''
 
<source lang="csharp">
return new LocalRedirectResult("url");
//oder
return LocalRedirect("url");
</source>
 
'''301 - Moved Permanently'''
 
<source lang="csharp">
return new LocalRedirectResult("url", true);
//oder
return LocalRedirectPermanent("url");
</source>
 
=== RedirectResult ===
Repräsentiert eine Antwort zur Umleitung von der aktuellen Aktionsmethode zu einer beliebigen anderen URL (entweder innerhalb derselben Webanwendung oder einer anderen Webanwendung).
 
'''302 - Found'''
 
<source lang="csharp">
return new RedirectResult("url");
//oder
return Redirect("url");
</source>
 
'''301 - Moved Permanently'''
 
<source lang="csharp">
return new RedirectResult("url", true);
//oder
return RedirectPermanent("url");
</source>

Version vom 24. Juni 2025, 15:18 Uhr

Schwachstellen

Sprachmodell