Frage

Zu sehen, wie SO online geht, war für mich eine ziemliche Lehre.Ich möchte eine Checkliste verschiedener Schwachstellen und Exploits erstellen, die gegen Websites eingesetzt werden, und welche Programmiertechniken verwendet werden können, um sich dagegen zu verteidigen.

  • Welche Kategorien von Schwachstellen?
  • Welche Art von defensiven Programmiertechniken?
  • usw...
War es hilfreich?

Lösung

Von dem Öffnen Sie das Web Application Security-Projekt:

  1. Der OWASP Top Ten Schwachstellen (pdf)
  2. Für eine schmerzhaft erschöpfendere Liste: Kategorie:Sicherheitslücke

Die Top Ten sind:

  1. Cross-Site-Scripting (XSS)
  2. Injektionsfehler (SQL-Injection, Script-Injection)
  3. Ausführung bösartiger Dateien
  4. Unsicherer direkter Objektverweis
  5. Cross-Site-Request-Forgery (XSRF)
  6. Informationslecks und unsachgemäße Fehlerbehandlung
  7. Defekte Authentifizierung und Sitzungsverwaltung
  8. Unsicherer kryptografischer Speicher
  9. Unsichere Kommunikation
  10. Fehler beim Einschränken des URL-Zugriffs

Andere Tipps

Testen Sie natürlich jedes Feld auf Schwachstellen:

  • SQL – Escape-Strings (z. B. mysql_real_escape_string)
  • XSS
  • HTML wird aus Eingabefeldern gedruckt (normalerweise ein gutes Zeichen für XSS)
  • Alles andere, was nicht dem spezifischen Zweck entspricht, für den dieses Feld erstellt wurde

Suchen Sie nach Endlosschleifen (die einzige indirekte Sache (wenn viele Leute sie versehentlich finden), die einen Server wirklich zum Absturz bringen könnte).

Einige Präventionstechniken:

XSS

  • Wenn Sie Parameter/Eingaben vom Benutzer übernehmen und jemals vorhaben, diese auszugeben, sei es in einem Protokoll oder auf einer Webseite, bereinigen Sie sie (entfernen/entfernen Sie alles, was HTML, Anführungszeichen, Javascript ähnelt ...). Wenn Sie den aktuellen URI von drucken eine Seite in sich, desinfizieren!Selbst das Drucken von PHP_SELF ist beispielsweise unsicher.Desinfizieren!Reflektierendes XSS stammt größtenteils aus nicht bereinigten Seitenparametern.

  • Wenn Sie Eingaben des Benutzers entgegennehmen und diese speichern oder ausdrucken, warnen Sie ihn, wenn etwas Gefährliches/Ungültiges festgestellt wird, und bitten Sie ihn, die Eingabe erneut vorzunehmen.Ein IDS eignet sich gut zur Erkennung (z. B. PHPIDS). Anschließend desinfizieren Sie es vor dem Speichern/Drucken.Wenn Sie dann etwas aus dem Speicher/der Datenbank drucken, desinfizieren Sie es erneut!Eingabe -> IDS/Desinfektion -> Speichern -> Desinfizieren -> Ausgabe

  • Verwenden Sie während der Entwicklung einen Codescanner, um potenziell anfälligen Code zu erkennen.

XSRF

  • Verwenden Sie niemals GET -Anfrage nach zerstörerischen Funktionen, dheinen Beitrag löschen.Akzeptieren Sie stattdessen nur Postanfragen.GET macht es Hackern besonders leicht.
  • Überprüfen Sie den Empfehler, um sicherzustellen, dass die Anfrage von Ihrer Website stammt funktioniert nicht.Es ist nicht schwer, den Empfehler zu fälschen.
  • Verwenden Sie einen zufälligen Hash als Token, der in jeder Anfrage vorhanden und gültig sein muss und nach einer Weile abläuft.Drucken Sie das Token in einem versteckten Formularfeld aus und überprüfen Sie es auf der Serverseite, wenn das Formular gepostet wird.Bösewichte müssten den richtigen Token angeben, um eine Anfrage zu fälschen, und wenn sie es schaffen würden, an den echten Token zu kommen, müsste dies geschehen, bevor dieser abgelaufen ist.

SQL-Injektion

  • Ihre ORM- oder DB-Abstraktionsklasse sollte über Desinfektionsmethoden verfügen – verwenden Sie diese immer.Wenn Sie keine ORM- oder DB-Abstraktionsklasse verwenden ...du solltest sein.

SQL-Injektion

XSS (Cross-Site-Scripting)-Angriffe

Leicht zu überblicken und leicht zu reparieren:die Bereinigung der von der Clientseite empfangenen Daten.Überprüfen Sie nach Dingen wie '; kann helfen, zu verhindern, dass schädlicher Code in Ihre Anwendung eingespritzt wird.

Tag auch,

Ein gutes statisches Analysetool für die Sicherheit ist FehlerFinder geschrieben von David Wheeler.Es leistet gute Arbeit bei der Suche nach verschiedenen Sicherheitslücken.

Es ersetzt jedoch nicht, dass eine sachkundige Person Ihren Code durchliest.Wie David auf seiner Webseite sagt: „Ein Narr mit einem Werkzeug ist immer noch ein Narr!“

HTH.

Prost, Rob

Sie können gute Firefox-Addons erhalten, um mehrere Fehler und Schwachstellen wie XSS- und SQL-Injections zu testen Sicherheitskompass.Schade, dass sie unter Firefox 3.0 nicht funktionieren.Ich hoffe, dass diese bald aktualisiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top