Frage

Welche Art von Eingabe ist am wenigsten anfällig für Cross-Site Scripting (XSS) und SQL-Injection-Attacken.

PHP, HTML, BBCode, usw. brauche ich für ein Forum zu wissen, dass ich ein Freund bin helfen einzurichten.

War es hilfreich?

Lösung

Wir müssen mehr über Ihre Situation kennen. Verwundbar wie? Einige Dinge, die Sie immer tun sollten:

  • Escape-Strings, bevor sie in einer Datenbank zum Schutz vor SQL-Injektionen zu speichern
  • HTML kodieren Saiten, wenn sie zurück an den Benutzer aus einer unbekannten Quelle drucken, bösartige HTML / JavaScript
  • zu verhindern

Ich würde nie php von einem Benutzer zur Verfügung gestellt auszuführen. BBCode / UBBCode ist in Ordnung, weil sie semantisch korrekter HTML konvertiert werden, obwohl Sie XSS-Schwachstellen aussehen wollen in ungültigen Image-Tags bezogen. Wenn Sie HTML-Eingabe erlauben, können Sie bestimmte Elemente weiße Liste, aber das wird ein komplizierter Ansatz sein, der fehleranfällig ist. Also, da alle vorhergehenden, würde ich sagen, dass eine gute off-the-shelf mit BBCode Bibliothek wäre die beste Wahl sein.

Andere Tipps

(I habe gerade gebucht dies in einem Kommentar, aber es scheint, ein paar Leute haben den Eindruck, dass Listen auswählen, Radio-Buttons, etc. müssen nicht desinfiziert werden.)

Zählen Sie nicht auf Radiobuttons ist sicher. Sie sollten immer noch die Daten auf dem Server sanieren. Die Menschen könnten eine HTML-Seite auf dem lokalen Rechner erstellen und ein Textfeld mit dem gleichen Namen wie die Radio-Button machen, und haben diese Daten wieder gepostet.

Eine fortgeschrittenere Benutzer einen Proxy wie WebScarab nutzen könnten, und nur zwicken die Parameter, wie sie zurück an den Server gesendet.

Eine gute Faustregel zu immer verwendet parametrisierte SQL-Anweisungen und immer escape nutzergenerierten Daten, bevor sie in die HTML setzen.

Keiner von ihnen ist. Alle Daten, die auf dem Server erwartet wird, können durch die mit dem Wissen und die Motivation manipuliert werden. Der Browser und die Form, die Sie Menschen mit zu erwarten ist nur eine von mehreren Möglichkeiten, gültiger Daten auf Ihren Server / script einzureichen.

Bitte machen Sie sich mit dem Thema XSS und damit zusammenhängende Fragen

Jede Art von boolean.

Sie können sogar ungültige Eingabe filtern ganz leicht.

; -)

Es gibt viele BB-Code-Parser, die Eingabe für HTML sanieren und so weiter. Wenn es als Paket nicht ein verfügbar ist, dann könnte man an einen der Open-Source-Forum Software-Pakete zur Orientierung suchen.

BB-Code macht Sinn, da es der "Standard" für Foren ist.

Der Eingang, die am wenigsten anfällig für Angriffe ist, ist der „Nicht-Eingang“.

Sind Sie die richtige Frage zu stellen?

Für Odin willen, bitte sanieren nicht-Eingänge. Haben Sie keine Angst vor der Benutzer eingeben, was sie in Ihre Formulare wollen.

Benutzereingabe ist nicht von Natur aus unsicher. Die akzeptierte Antwort führt zu dieser Art von Web-Schnittstellen wie meine Bank, wo Herr O'Reilly nicht ein Konto eröffnen kann, weil er ein unzulässiges Zeichen in seinem Namen hat. Was ist unsicher ist immer, wie Sie die Benutzereingabe verwenden.

Der richtige Weg, um SQL-Injektionen zu vermeiden, ist bereit, Aussagen zu verwenden. Wenn Sie Ihre Datenbank-Abstraktionsschicht Sie diejenigen nicht verwenden lassen, verwenden Sie die richtige Flucht Funktionen rigoros (myslq_escape et al). Der richtige Weg XSS-Angriffe zu verhindern, ist nie so etwas wie Striptags (). Entfliehen Sie alles - in PHP, so etwas wie htmlentities () ist das, was Sie suchen, aber es hängt davon ab, ob Sie outputing die Zeichenfolge als Teil von HTML-Text, ein HTML-Attribute, oder innerhalb von Javascript, usw. Verwenden Sie das richtige Werkzeug für den richtigen Kontext. Und nie druckt nur die Eingabe des Benutzers direkt auf der Seite.

Schließlich haben einen Blick auf die Top 10 Schwachstellen von Web-Anwendungen, und das Richtige zu tun, sie zu verhindern. http://www.applicure.com/blog/owasp-top-10-2010

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