Ich denke über OpenID als Login-Methode für meine PHP-Anwendung nach, aber eine Sache hindert mich daran, weiterzumachen: Wie kann ich einen OpenID-Verbraucher vor Missbrauch schützen?
Ein Beispiel für den Missbrauch von OpenID durch die Verwendung eines Konsumenten als Proxy
Missbrauch bedeutet, andere Server mit Anfragen zu überschwemmen, meine Anwendung als Proxy zu verwenden, einen großen Download als URL zu übergeben oder den Server durch viele Anfragen unnötig zu verlangsamen.
Ich schätze, ich sollte die Geschwindigkeitsbegrenzung für Anfragen implementieren, aber wie soll ich das machen? Mögliche Angreifer könnten andere Proxys oder TOR verwenden, um IP-Prüfungen zu umgehen. Die Begrenzung der Anbieter, die erlaubt sind, wäre gegen die Prinzipien von OpenID richtig?
Ich erwarte nicht, dass meine Benutzer böse sind, aber ich würde gerne wissen, welche Dinge ich berücksichtigen muss, bevor ich einen weiteren möglichen Angriffsvektor hinzufüge.
Sollte es von Bedeutung sein, werde ich lightopenid als Back-End für die PHP-Anwendung verwenden.
Sie müssen die Angriffe in zwei Pools aufteilen. 1) Angriffe gegen Ihre eigene Seite und 2) Angriffe gegen jemanden, der Sie als Stellvertreter benutzt. Keines dieser Probleme ist neu oder einzigartig für OpenID. Zum Beispiel könnten die klassischen "Tell a friend" E-Mail-Formulare automatisiert werden, um E-Mail-Spam von der IP-Adresse und E-Mail des Proxy-Teilnehmers zu senden, die Spam-Partei vor Folgen zu schützen und ihnen eine (potenziell) saubere IP / E-Mail zu liefern bereits durch Spam-Schutz gekennzeichnet. Dies wurde in erster Linie mit dem "CAPTCHA" behoben, um eine automatisierte Verwendung des Formulars zu verhindern.
Bei Angriffen auf Ihre eigene Seite wurde dies schon unzählige Male zuvor behandelt. Versuchen Sie es hier: Schützen Sie sich vor DOS-Angriffen
Bei Angriffen gegen die Site einer anderen Person gelten viele der gleichen Prinzipien wie in der anderen Frage erwähnt. Beschleunigen Sie Authentifizierungsanfragen, lehnen Sie unvernünftige oder fehlerhafte Anfragen ab, überprüfen Sie den Content-Length-Header mit tatsächlichem Inhalt auf POST-Backs und natürlich können Sie immer das klassische "CAPTCHA" hinzufügen, um automatisierte Angriffe mit Ihrem OpenID-Consumer zu verhindern.
Auch im Gegensatz zu anderen Vorschlägen würde ich hier nicht auf Basis der OpenID-TLD, sondern der IP-Adresse der anfragenden Partei drosseln. Ja, Leute können Proxy-IPs mieten, aber basierend auf der TLD können Sie nicht ziemlich viel Gas geben, da die Benutzerbasis für jeden OpenID-Anbieter sehr unterschiedlich ist. Sie können auch eine Datenbank bekannter Proxy-IPs von einem Unternehmen wie MaxMind erwerben. Wenn der Benutzer von einer Proxy-IP kommt, erhöhen Sie die Aggressivität Ihrer Drosselung.
Verlangsamen Sie die Anfragen proportional zur Anzahl der Anfragen einer bestimmten Domain.
Nehmen Sie zum Beispiel an, dass jemand versucht, den Server example.com
für DOS zu verwenden, indem er viele URLs wie http://example.com/foo
, http://example.com/bar
, http://example.com/foobar120382
anfordert. Betrachten Sie alle diese Anforderungen als Anforderungen für example.com
und führen Sie die erste Anforderung ohne Verzögerung aus. Verzögere 2 Sekunden vor der nächsten Anfrage, ver zöge 4 Sekunden vor der dritten Anfrage, ver zöge 8 Sekunden vor der vierten Anfrage, 16 vor der fünften, und so weiter.
Solche kleinen Verzögerungen werden von menschlichen Benutzern kaum bemerkt, aber die Fähigkeit Ihres Servers, als DOS-Proxy zu fungieren, wird stark eingeschränkt. Denken Sie nur, dass die zwölfte Anfrage für mehr als eine Stunde blockiert wird (wenn Sie Potenzen von zwei verwenden).
Selbstverständlich sollten Sie auch eine Art White- oder Gray-Liste für gängige große OpenID-Provider wie Google oder myOpenID erstellen. Diese Domains werden wahrscheinlich sehr oft angefordert.
Ich würde etwas einfacher machen. Beschränken Sie die OpenID-Endpunkte auf eine begrenzte Anzahl von vertrauenswürdigen: Google, WordPress, Myopenid, Yahoo. Es wird wahrscheinlich die meisten Benutzer abdecken und wird es Bots nicht ermöglichen, Ihre Website Traffic auf zufällige Seiten generieren zu lassen.
Tags und Links openid denial-of-service