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

Aus ahrensburg.city
(Unterschied zwischen Seiten)
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „Absolut! Hier ist die deutsche Übersetzung des Textes, formatiert in MediaWiki-Syntax. = Einführung in Controller = Ein Controller ist eine Klasse, die verwendet wird, um eine Reihe von Aktionen (oder Aktionsmethoden) zu gruppieren. Aktionsmethoden führen eine bestimmte Operation aus, wenn eine Anfrage empfangen wird, und geben das Ergebnis (Antwort) zurück. == Controller erstellen == Controller sollten eines oder beides erfüllen: Der Klassenname…“
 
// via Wikitext Extension for VSCode
 
Zeile 1: Zeile 1:
Absolut! Hier ist die deutsche Übersetzung des Textes, formatiert in MediaWiki-Syntax.
==Schwachstellen==
 
===Sprachmodell===
= Einführung in Controller =
* [https://airiskdatabase.com AI Risk Database] – Eine Datenbank mit Risiken und Schwachstellen im Bereich Künstliche Intelligenz.
Ein Controller ist eine Klasse, die verwendet wird, um eine Reihe von Aktionen (oder Aktionsmethoden) zu gruppieren.
* [https://github.com/advisories GitHub CVE & Security Advisories] – Offizielle Sicherheitswarnungen und CVE-Meldungen von GitHub für Open-Source-Projekte.
Aktionsmethoden führen eine bestimmte Operation aus, wenn eine Anfrage empfangen wird, und geben das Ergebnis (Antwort) zurück.
* [https://cve.mitre.org/ MITRE CVE Database] – Zentrale Datenbank für öffentlich bekannte Schwachstellen (Common Vulnerabilities and Exposures, CVE).
 
* [https://nvd.nist.gov/ National Vulnerability Database (NVD)] – Die US-amerikanische nationale Datenbank für Schwachstellen, gepflegt vom NIST.
== Controller erstellen ==
* [https://www.cvedetails.com/ CVE Details] – Eine benutzerfreundliche Übersicht und Analyse von CVE-Einträgen.
Controller sollten eines oder beides erfüllen:
* [https://www.exploit-db.com/ Exploit Database] – Sammlung von Exploits und Proof-of-Concept-Code für bekannte Schwachstellen.
 
* [https://www.securityfocus.com/vulnerabilities SecurityFocus Vulnerability Database] – Archiv von Schwachstellen und Sicherheitsmeldungen.
Der Klassenname sollte mit "Controller" enden. Bsp: <code>HomeController</code>
* [https://www.openwall.com/lists/oss-security/ Open Source Security (oss-security)] – Mailingliste und Archiv zu Schwachstellen in Open-Source-Software.
Das <code>[Controller]</code>-Attribut wird auf die Klasse selbst oder auf ihre Basisklasse angewendet.
* [https://vuldb.com VulDB] – Community-basierte Schwachstellendatenbank mit aktuellen Informationen und Analysen.
<source lang="csharp">
* [https://www.zerodayinitiative.com/advisories/published/ Zero Day Initiative Advisories] – Veröffentlichte Schwachstellen und Exploits aus dem Zero Day Initiative Programm.
[Controller]
class KlassenNameController
{
// 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