Jak już wspomniano, nie można mieć systemu uwierzytelniania, takiego jak JWT, który chroni strony, takie jak logowanie i rejestracja. Jest jednak wiele innych rzeczy, które możesz zrobić. Poniżej krótko wspomniałem o dwóch z nich, aby zacząć i odpocząć, możesz szczegółowo się uczyć.
- pierwsze w celu rozwiązania problemu XSS -
Niektóre przeglądarki mają zdolność blokowania treści, które wydaje się być atak XSS. Pracują, szukając treści JavaScript w parametrach GET lub POST strony. Jeśli JavaScript zostanie odtworzony w odpowiedzi serwera, strona zostanie zablokowana z renderowaniem, a zamiast tego wyświetlana jest strona błędu. Nagłówek X-XSS-Protection służy do sterowania działaniem filtra XSS.
Realizacja
Django zapewnia Middleware i ustawienia dodane w ustawieniach> base.py Middleware:
django.middleware.security.SecurityMiddleware
ustawienia:
SECURE_BROWSER_XSS_FILTER = True
This sets header to X-XSS-Protection: 1; mode=block
inne rzeczy można zrobić, aby zapobiec niektóre skrypt od wielokrotnego trafiania na twoje strony logowania lub rejestracji to -
Bezpieczeństwo Issue
zautomatyzowany program może zaatakować hack nazwę użytkownika i hasło użytkownika lub spowolnić serwer.
Ataki te na ogół przyjmują jedną z kilku postaci: 1. Jeden adres IP próbujący jednej nazwy użytkownika z wieloma hasłami. 2. Wiele adresów IP próbujących jednej nazwy użytkownika z wieloma hasłami. 3. Jeden adres IP próbujący wielu nazw użytkowników za pomocą kilku popularnych haseł. 4. Wiele adresów IP próbujących wielu nazw użytkowników za pomocą jednego lub kilku popularnych haseł. 5. Atakowanie dowolnego losowego adresu URL w domenie w celu spowolnienia działania serwera.
Realizacja
Reszta Django Framework zapewnia ustawienia wbudowane do dławienia
REST_FRAMEWORK = {
...
'DEFAULT_THROTTLE_CLASSES': (
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle',
'rest_framework.throttling.ScopedRateThrottle',
),
'DEFAULT_THROTTLE_RATES': {
'anon': '60/minute',
'app1': '10000/day',
'app2': '10000/day',
},
...
}
Innym rozwiązaniem jest django-obrońca lub django-ratelimit zapobiegania tylko dla nieudanych prób logowania.
Mam nadzieję, że to pomaga.
Dzięki za pytanie. Ja również szukam odpowiedzi na to. –
Robienie tego na poziomie aplikacji nie jest najlepszym rozwiązaniem. Idealnie powinieneś użyć czegoś takiego jak fail2ban, aby wykryć znane wzorce ataków i zablokować je na poziomie zapory. W ten sposób próba brutalnej siły nie dotrze aż do wykrytej aplikacji. –
@MatthewDaly tak, szukałem fail2ban. Ale obecne rozwiązanie, które odkryłem, że programista Mobile and Backend może współużytkować jeden tajny klucz. Tak więc w tych aplikacjach API aplikacja mobilna wyśle klucz szyfrowania oparty na pewnym tekście, a programista zaplecza może odszyfrować tekst za pomocą tego samego tekstu. – Aniket