2016-09-24 26 views
5

Byłem i obecnie mogę być prawie każdym użytkownikiem Django Framework używającym Django Rest Framework do tworzenia interfejsów REST API. Używam go z uwierzytelnianiem tokena przy użyciu django-rest-framework-jwt i zwraca token, gdy użytkownik zalogował się za pośrednictwem naszego interfejsu API.Jak zabezpieczyć API do rejestracji i logowania w Django Rest Framework?

Pytanie więc, w jaki sposób zabezpieczyć wszelkie widoki rejestracji lub logowania dla naszych punktów końcowych API. Wszelkie wysokopoziomowe skrypty XSS mogą mieć złośliwą pętlę do tworzenia rejestracji. Jak możemy zabezpieczyć je w Django Rest Framework?

+2

Dzięki za pytanie. Ja również szukam odpowiedzi na to. –

+0

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. –

+0

@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

Odpowiedz

3

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 -

  • Brute Force Attack

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.