Frage

Gibt es irgendwelche transparente Bibliothek, die ich einfach so verwenden oder etwas kann ich verhindern kann, Cross-Site Fälschungs Anfrage (CSRF) mit Perl und Apache? Wie kann ich generieren Token für Formulare und sie serverseitige Validierung?

War es hilfreich?

Lösung

Um von "Cross-Site Request Forgery" von Server-Seite zu schützen, ist es am besten:

  1. Verwenden Sie HTML Flucht. Wenn Sie einige Template-System wie Template Toolkit verwenden, sollten Sie seine Flucht Fähigkeiten nutzen. Wenn Sie CGI.pm verwenden, hat es „escape“ sub, dies zu tun.
  2. Begrenzungs Lebensdauer der Session-Cookies auf relativ kurze Zeiträume. Für CGI :: Session kann mit $ Session-> verfallen ($ Zeit) durchgeführt werden.
  3. Überprüfen Sie referer wenn verwundbar Seiten ausgegeben werden.
  4. Verwenden Sie / akzeptieren GET-Anforderung nicht zu Daten ändern.

Dadurch ist Rahmen für spezifische, aber einfach.

Andere Tipps

Haben Sie einen Blick auf, was CGI :: Anwendung :: Plugin: : ProtectCSRF tut. Dieses Modul ist für die CGI :: Anwendungsrahmen.

Es sollte nicht zu schwer sein, das Modul für andere Frameworks zu ändern. Grundsätzlich erhalten Benutzer bilden ein verstecktes HTML-Feld mit den generierten Token hinzugefügt, und das Sitzungsobjekt erhält den gleichen Grund. Wenn das Formular abgeschickt wird, wird die Form vorgelegt Token in dem Session-Objekt auf den Token verglichen (die auf dem Server). Wenn sie nicht übereinstimmen, hat ein CSRF wahrscheinlich aufgetreten ist.

Es gibt auch eine Katalysator-Plugin: Katalysator ::-Controller :: RequestToken

Diese Module verwenden Attribut-Handler, so gibt es sehr wenig Änderungen an Ihrem bestehenden App erforderlich ist.

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