A Django kiváló biztonsági funkciókkal rendelkezik, de létfontosságú, hogy megértse őket, és hogy mit csinálnak, hogy alkalmazásai valóban biztonságosak legyenek.

A Django biztonságos alapot nyújt a webalkalmazások készítéséhez. De nem elég a Django alapértelmezett biztonsági funkcióira hagyatkozni. Alapvető fontosságú, hogy további intézkedéseket hajtson végre alkalmazásai biztonságának megerősítése érdekében.

További intézkedések bevezetésével csökkentheti a lehetséges sebezhetőségeket, megóvhatja az érzékeny adatokat, és megvédheti alkalmazását a kiberfenyegetésekkel szemben. Ez biztosítja a felhasználók adatainak védelmét, és segít megőrizni szervezete hírnevét és megbízhatóságát.

Kilátás biztosítása dekorátorokkal

A Django nézetei kezelik a bejövő kéréseket. Létfontosságú szerepet játszanak a kliens válaszának meghatározásában. A nézetek védelme szabályozza a hozzáférést és védi az érzékeny funkciókat. A Django olyan dekorátorokat kínál, amelyeket a nézetekre alkalmazhat meghatározott biztonsági intézkedések érvényesítése érdekében.

instagram viewer

@login_required Dekorátor

A @Bejelentkezés Szükséges A dekorátor biztosítja, hogy csak hitelesített felhasználók férhessenek hozzá egy adott nézethez. Amikor egy nem hitelesített felhasználó megpróbál hozzáférni a nézethez, az alkalmazás átirányítja őt a bejelentkezési oldalra.

tól től django.contrib.auth.decorators import Bejelentkezés Szükséges
tól től django.http import HttpResponse

@Bejelentkezés Szükséges
defbiztonságos_nézet(kérés):
# Itt a nézet logikája
Visszatérés HttpResponse("Ez egy biztonságos kilátás")

Alkalmazása a @Bejelentkezés Szükséges A decorator a secure_view funkcióhoz automatikusan biztosítja a felhasználó hitelesítését, mielőtt végrehajtaná a nézet logikáját.

Egyedi dekorátorok

A Django lehetővé teszi egyedi dekorátorok létrehozását. Ez lehetővé teszi további biztonsági ellenőrzések vagy korlátozások végrehajtását. Létrehozhat például egy dekorátort, amely korlátozza a hozzáférést bizonyos felhasználói szerepkörökhöz.

tól től funkcionális eszközök import pakolások
tól től django.http import HttpResponse

defadmin_only(view_func):
@wraps (view_func)
defcsomagolás(kérés, *args, **kwargs):
ha request.user.is_superuser:
Visszatérés view_func (kérelem, *args, **kwargs)
más:
Visszatérés HttpResponse("Hozzáférés megtagadva")

Visszatérés csomagolás

A admin_only A dekorátor ellenőrzi, hogy a nézethez hozzáférő felhasználó szuperfelhasználó-e. Ha igen, a nézet funkció fut, ellenkező esetben megtagadja a felhasználói hozzáférést.

Felhasználó hitelesítés és engedélyezés

A felhasználói hitelesítés és engedélyezés a Django-alkalmazások biztonságának kritikus elemei. Biztosítják, hogy a megfelelő személy férhessen hozzá az alkalmazás bizonyos funkcióihoz.

Felhasználói hitelesítés

A felhasználói hitelesítés ellenőrzi az alkalmazáshoz hozzáférő személy kilétét. A Django hitelesítési rendszere funkcionalitást biztosít ennek kezelésére.

tól től django.contrib.auth import hitelesítés, bejelentkezés
tól től django.http import HttpResponse

deflogin_view(kérés):
ha kérés.módszer == 'POST':
felhasználónév = kérés. POST['felhasználónév']
jelszó = kérés. POST['Jelszó']
user = hitelesítés (kérés, felhasználónév=felhasználónév, jelszó=jelszó)

ha felhasználó vannemEgyik sem:
bejelentkezés (kérés, felhasználó)
Visszatérés HttpResponse("Sikeres bejelentkezés")
más:
Visszatérés HttpResponse("Érvénytelen hitelesítő adatok")
más:
# Jelenítse meg a bejelentkezési űrlapot
Visszatérés HttpResponse("Bejelentkezési űrlap")

A login_view függvény kezeli a bejelentkezési folyamatot. Amikor egy felhasználó elküldi hitelesítő adatait, a hitelesítési funkció ellenőrzi azokat. Ha a hitelesítő adatok érvényesek, a bejelentkezési funkció munkamenetet hoz létre a felhasználó számára, lehetővé téve számára, hogy hozzáférjen az alkalmazás korlátozott területeihez. Ha a hitelesítési adatok rosszak, a kód nem hoz létre munkamenetet.

Felhasználó engedélyezése

A felhasználói jogosultság határozza meg, hogy a felhasználó milyen műveleteket hajthat végre az alkalmazáson belül. A Django rugalmas engedélyrendszert biztosít, amely lehetővé teszi a felhasználói hozzáférés szabályozását.

tól től django.contrib.auth.decorators import permission_required
tól től django.http import HttpResponse

@permission_required('polls.can_vote')
defszavazás(kérés):
# Szavazási logika itt
Visszatérés HttpResponse("Szavazat rögzítve")

A fenti példában a @permission_required dekorátor biztosítja, hogy csak a felhasználók a polls.can_vote engedéllyel hozzáférhet a szavazás nézethez. Ha egy felhasználó a szükséges engedélyek nélkül megpróbál hozzáférni a nézethez, a rendszer megtagadja a hozzáférést.

Egyéni köztes szoftver megvalósítása

A köztes szoftver a webszerver és a nézet között helyezkedik el. Az egyéni köztes szoftver megvalósítása további biztonsági ellenőrzéseket ad hozzá, vagy módosítja a kéréseket és válaszokat. Ennek oka lehet például a HTTPS kényszerítése.

tól től django.http import HttpResponsePermanentRedirect

osztályEnforceHttpsMiddleware:
def__benne__(saját, kap_választ):
self.get_response = get_response

def__hívás__(önmagam, kérés):
hanem request.is_secure():
url = request.build_absolute_uri (request.get_full_path())
biztonságos_url = url.replace(' http://', ' https://')
Visszatérés HttpResponsePermanentRedirect (secure_url)

Visszatérés self.get_response (kérés)

A fenti köztes szoftver ellenőrzi, hogy a kérés használja-e a is_secure módszer. Ha nem, akkor átirányítja a Az URL HTTPS-verziója.

Biztonságos fájlkezelés

A fájlkezelés általános funkció a webes alkalmazásokban. Biztonsági kockázatot jelent, ha nincs megfelelően biztosítva. A felhasználók által feltöltött fájlok kezelésekor fontos ellenőrizni a fájl tartalmát. Ez megakadályozza a rosszindulatú feltöltéseket. A fájltípusokat a Django FileExtensionValidator segítségével ellenőrizheti.

tól től django.core.validators import FileExtensionValidator
tól től django.formák import formák

osztályFileUploadForm(űrlapok. Forma):
fájl = űrlapok. FileField (validators=[FileExtensionValidator (allowed_extensions=['pdf', 'docx'])])

A fenti kódblokkban a FileUploadForm osztály használja a FileExtensionValidator hogy csak PDF és DOCX fájlok feltöltését engedélyezze. Az alkalmazás a feltöltés során elutasít minden más fájlformátumot. Szabja testre az engedélyezett bővítményeket az alkalmazás követelményei szerint.

CSRF védelem

A Django beépített CSRF-védelmével megelőzheti a Cross-Site Request Forgery (CSRF) támadásokat. A sablonban szerepelnie kell a CSRF token amely a szerver oldalon érvényesül.

"posta" akció="/submit-form/">
{% csrf_token %}
Űrlapmezők


Amikor használja a % csrf_token % sablon címke, a Django egy rejtett beviteli mezőt generál a CSRF tokennel. Ez a token minden felhasználói munkamenethez egyedi. Segít a beküldött űrlap hitelességének ellenőrzésében.

A szerveroldal ellenőrzi a CSRF tokent az űrlap elküldése során. Ha a token hiányzik vagy érvénytelen, a Django Tiltott (HTTP 403) hibát jelez. Alapvető fontosságú annak biztosítása, hogy alkalmazása biztonságban legyen az ilyen típusú biztonsági résekkel szemben.

Biztonságos űrlapok írása

Űrlapok létrehozásakor fontos a felhasználói bevitel biztonságos kezelése. Ez az olyan gyakori sebezhetőségek megelőzésére szolgál, mint az SQL-injektálás és az XSS-támadások. Az alábbiakban egy példa bemutatja, hogyan hozhat létre biztonságos űrlapot a Django-ban.

tól től django import formák
tól től django.utils.html import menekülni

osztálySecureForm(űrlapok. Forma):
név = formák. CharField (max_length=100)
email = űrlapok. EmailField()

deftiszta_név(maga):
név = self.cleaned_data['név']

# A felhasználói bevitel megtisztítása
sanitized_name = escape (név)
Visszatérés fertőtlenített_név

deftiszta_e-mail(maga):
email = self.cleaned_data['email']

# A felhasználói bevitel érvényesítése és megtisztítása
hanem email.endswith("@example.com"):
emel formák. Validation Error("Érvénytelen e-mail domain")

sanitized_email = escape (e-mail)
Visszatérés fertőtlenített_e-mail

A tiszta_név és tiszta_e-mail módszerek érvényesítik és megtisztítják a felhasználói bevitelt. A tiszta_név módszer a menekülni funkció a névbevitel megtisztítására és megakadályozására lehetséges XSS támadások.

A tiszta_e-mail módszer érvényesíti az e-mail formátumot, és erre korlátozza az e-mail tartományt example.com. Felveti a Validation Error ha az e-mail nem felel meg a megadott feltételeknek. Ez a művelet növeli az űrlapok biztonságát, és megvédi őket a gyakori sebezhetőségektől.

A webalkalmazások sebezhetőségeinek megértése fontos

A webalkalmazások sebezhetőségeinek megértése segít az alkalmazás biztonságában. Ezt úgy teszi, hogy segít azonosítani és kezelni az alkalmazás lehetséges gyenge pontjait. Ez viszont jelentősen csökkenti a sikeres támadások valószínűségét.