Flooding Prävention

In diesem Artikel erklären wir, wie Dein System vor Flooding geschützt werden kann. Flooding wird dadurch verursacht, dass eine hohe Anzahl von Anfragen an den Server gesendet wird, so dass der Server Schwierigkeiten hat, die Last zu bewältigen. Das System schränkt diese Anfragen nun nach den folgenden Regeln ein.

Login

Registrierte Kunden, Gastbenutzer und Admin User können bis zu 10 Mal versuchen, sich anzumelden, bevor sie vom System verzögert werden.

  • Nach 10 fehlgeschlagenen Anmeldeversuchen muss der Kunde 10 Sekunden warten, bevor er erneut versuchen kann, sich anzumelden.
  • Nach 15 fehlgeschlagenen Anmeldeversuchen sind es 30 Sekunden.
  • Nach 20 fehlgeschlagenen Anmeldeversuchen sind es 60 Sekunden.

Nach einem erfolgreichen Login oder nach 24 Stunden ohne fehlgeschlagenen Login wird das Limit zurückgesetzt.

Kontaktformular

Der Kunde kann 3 Kontaktformulare hintereinander abschicken, bevor er vom System verzögert wird.

  • Nach dem Absenden von 3 Kontaktformularen muss der Kunde 30 Sekunden warten, bevor er das nächste Formular absenden kann.
  • Nach dem Absenden von 5 Kontaktformularen sind es 60 Sekunden.
  • Nach dem Absenden von 10 Kontaktformularen sind es 90 Sekunden.

Nach 24 Stunden wird das Limit zurückgesetzt.

Passwort wiederherstellen

Registrierte Kunden, Gastbenutzer und Admin User haben 3 Versuche, ihr Passwort zurückzusetzen, bevor sie vom System verzögert werden.

  • nach 3 fehlgeschlagenen Anmeldeversuchen muss der Benutzer 30 Sekunden warten, bevor er sich erneut anmelden kann.
  • Nach 5 fehlgeschlagenen Anmeldeversuchen sind es 60 Sekunden.
  • Nach 10 fehlgeschlagenen Anmeldeversuchen sind es 90 Sekunden.

Nach 24 Stunden wird das Limit zurückgesetzt.

Storefront Ansicht

Konfiguration

Bei allen neuen Shopware-Projekten findet sich in der Installation unter config/packages/ nur noch eine lock.yaml Datei. Dies kann auch der Fall sein, wenn du ein Update durchgeführt hast und die .yaml Dateien unter config/packages/ im Standard waren.

Sollte dies bei dir der Fall sein, musst du eine neue shopware.yaml Datei erstellen und hier die Anpassungen einfügen!

Im Admin gibt es keine Konfiguration, um Änderungen vorzunehmen, muss man die folgende Core Datei /framework/resources/config/packages/shopware.yaml in das Stammverzeichnis des Shops unter config/packages/shopware.yaml kopieren, nun kann man die Datei bearbeiten, um eine Funktion zu aktivieren/deaktivieren.

  • login: Der Login in der Storefront für registrierte Kunden.
  • guest_login: Der Login in der Storefront für Gastbenutzer.
  • oauth: Der Login im Admin Bereich.
  • reset_password: Passwort wiederherstellen in der Storefront.

  • user_recovery: Passwort wiederherstellen im Admin Bereich.
  • contact_form: Das Kontaktformular.

Du kannst eine Funktion deaktivieren, indem Du die entsprechende Zeile von enabled: true auf enabled: false änderst.

Du findest die Konfiguration in der shopware.yaml, so sieht sie aus:

Nach der Anpassung muss in der Konsole php bin/console cache:clearausgeführt werden, damit die Änderungen wirksam werden.

shopware:
    api:
        max_limit: 100
        api_browser:
            auth_required: true
        store:
            context_lifetime: 'P1D' # 1 day interval, see also https://www.php.net/manual/en/dateinterval.construct.php#refsect1-dateinterval.construct-parameters
        rate_limiter:
            login:
                enabled: true
                policy: 'time_backoff'
                reset: '24 hours' # reset limit after this time if no more requests failed
                limits:
                    - limit: 10
                      interval: '10 seconds'
                    - limit: 15
                      interval: '30 seconds'
                    - limit: 20
                      interval: '60 seconds'
            guest_login:
                enabled: true
                policy: 'time_backoff'
                reset: '24 hours'
                limits:
                    - limit: 10
                      interval: '10 seconds'
                    - limit: 15
                      interval: '30 seconds'
                    - limit: 20
                      interval: '60 seconds'
            oauth:
                enabled: true
                policy: 'time_backoff'
                reset: '24 hours'
                limits:
                    - limit: 10
                      interval: '10 seconds'
                    - limit: 15
                      interval: '30 seconds'
                    - limit: 20
                      interval: '60 seconds'
            reset_password:
                enabled: true
                policy: 'time_backoff'
                reset: '24 hours'
                limits:
                    - limit: 3
                      interval: '30 seconds'
                    - limit: 5
                      interval: '60 seconds'
                    - limit: 10
                      interval: '90 seconds'
            user_recovery:
                enabled: true
                policy: 'time_backoff'
                reset: '24 hours'
                limits:
                    - limit: 3
                      interval: '30 seconds'
                    - limit: 5
                      interval: '60 seconds'
                    - limit: 10
                      interval: '90 seconds'
            contact_form:
                enabled: true
                policy: 'time_backoff'
                reset: '24 hours'
                limits:
                    - limit: 3
                      interval: '30 seconds'
                    - limit: 5
                      interval: '60 seconds'
                    - limit: 10
                      interval: '90 seconds'

War dieser Artikel hilfreich?