Django memiliki fitur keamanan luar biasa tetapi sangat penting bagi Anda untuk memahaminya, dan apa yang mereka lakukan, agar aplikasi Anda benar-benar aman.

Django menyediakan landasan yang aman untuk membangun aplikasi web. Tapi mengandalkan fitur keamanan bawaan Django tidaklah cukup. Penting bagi Anda untuk menerapkan tindakan tambahan untuk memperkuat keamanan aplikasi Anda.

Dengan menerapkan tindakan tambahan, Anda dapat memitigasi potensi kerentanan, melindungi data sensitif, dan melindungi aplikasi Anda dari ancaman dunia maya. Ini memastikan perlindungan informasi pengguna Anda dan membantu menjaga reputasi dan kepercayaan organisasi Anda.

Mengamankan Tampilan Dengan Dekorator

Tampilan di Django menangani permintaan masuk. Mereka memainkan peran penting dalam menentukan respons yang didapat klien. Mengamankan tampilan mengontrol akses dan melindungi fungsionalitas sensitif. Django menawarkan dekorator yang dapat Anda terapkan pada tampilan untuk menerapkan tindakan keamanan khusus.

instagram viewer

@login_required Dekorator

Itu @login dibutuhkan dekorator memastikan bahwa hanya pengguna yang diautentikasi yang dapat mengakses tampilan tertentu. Saat pengguna yang tidak diautentikasi mencoba mengakses tampilan, aplikasi mengarahkan mereka ke halaman login.

dari django.contrib.auth.decorators impor login dibutuhkan
dari django.http impor HttpResponse

@login dibutuhkan
defsecure_view(meminta):
# Logika tampilan Anda di sini
kembali HttpRespon("Ini adalah tampilan yang aman")

Menerapkan @login dibutuhkan dekorator ke fungsi secure_view secara otomatis memastikan pengguna diautentikasi sebelum menjalankan logika tampilan.

Dekorator Kustom

Django memungkinkan Anda membuat dekorator kustom. Ini memungkinkan Anda menerapkan pemeriksaan atau pembatasan keamanan tambahan. Misalnya, Anda mungkin ingin membuat dekorator yang membatasi akses ke peran pengguna tertentu.

dari functools impor membungkus
dari django.http impor HttpResponse

defadmin_only(lihat_fungsi):
@bungkus (view_func)
defpembungkus(permintaan, *args, **kwargs):
jika request.user.is_superuser:
kembali view_func (permintaan, *args, **kwargs)
kalau tidak:
kembali HttpRespon("Akses ditolak")

kembali pembungkus

Itu admin_only dekorator memeriksa apakah pengguna yang mengakses tampilan adalah pengguna super. Jika ya, fungsi tampilan akan berjalan, jika tidak maka menolak akses pengguna.

Otentikasi dan Otorisasi Pengguna

Otentikasi dan otorisasi pengguna adalah komponen penting untuk mengamankan aplikasi Django. Mereka memastikan bahwa orang yang tepat sedang mengakses fungsionalitas tertentu dari aplikasi.

Otentikasi Pengguna

Otentikasi pengguna memverifikasi identitas orang yang mengakses aplikasi Anda. Sistem pengesahan Django menyediakan fungsionalitas untuk menangani ini.

dari django.contrib.auth impor autentikasi, login
dari django.http impor HttpResponse

deflogin_view(meminta):
jika permintaan.metode == 'POS':
nama pengguna = permintaan. POS['nama belakang']
kata sandi = permintaan. POS['kata sandi']
pengguna = otentikasi (permintaan, nama pengguna = nama pengguna, kata sandi = kata sandi)

jika pengguna adalahbukanTidak ada:
masuk (permintaan, pengguna)
kembali HttpRespon("Login berhasil")
kalau tidak:
kembali HttpRespon("Kredensial tidak valid")
kalau tidak:
# Render formulir masuk
kembali HttpRespon("Formulir masuk")

Itu login_view fungsi menangani proses login. Saat pengguna mengirimkan kredensial mereka, fungsi autentikasi akan memverifikasinya. Jika kredensial valid, fungsi login membuat sesi untuk pengguna, memungkinkan mereka mengakses area terbatas aplikasi. Jika kredensial salah, kode tidak membuat sesi.

Otorisasi Pengguna

Otorisasi pengguna menentukan tindakan apa yang dapat dilakukan pengguna dalam aplikasi. Django menyediakan sistem izin fleksibel yang memberi Anda kendali atas akses pengguna.

dari django.contrib.auth.decorators impor izin_diperlukan
dari django.http impor HttpResponse

@permission_required('polls.can_vote')
defPilih(meminta):
# Voting logika di sini
kembali HttpRespon("Suara direkam")

Pada contoh di atas, the @permission_required dekorator memastikan bahwa hanya pengguna dengan polls.can_vote izin dapat mengakses tampilan suara. Jika pengguna tanpa izin yang diperlukan mencoba mengakses tampilan, akses mereka ditolak.

Menerapkan Middleware Kustom

Middleware berada di antara server web dan tampilan. Menerapkan custom middleware menambahkan pemeriksaan keamanan tambahan atau mengubah permintaan dan tanggapan. Ini bisa karena alasan seperti menegakkan HTTPS.

dari django.http impor HttpResponsePermanentRedirect

kelasMenegakkanHttpsMiddleware:
def__init__(diri, get_response):
self.get_response = get_response

def__panggilan__(diri sendiri, permintaan):
jikabukan request.is_secure():
url = request.build_absolute_uri (request.get_full_path())
secure_url = url.ganti(' http://', ' https://')
kembali HttpResponsePermanentRedirect (url_aman)

kembali self.get_response (permintaan)

Middleware di atas memeriksa apakah permintaan menggunakan is_secure metode. Jika tidak, itu dialihkan ke Versi HTTPS dari URL.

Mengamankan Penanganan File

Penanganan file adalah fitur umum dalam aplikasi web. Ini menimbulkan risiko keamanan jika tidak diamankan dengan benar. Saat menangani file yang diunggah pengguna, penting untuk memvalidasi konten file. Ini mencegah unggahan berbahaya. Anda dapat memvalidasi tipe berkas menggunakan FileExtensionValidator Django.

dari django.core.validators impor FileExtensionValidator
dari django.forms impor formulir

kelasFileUploadForm(formulir. Membentuk):
file = formulir. FileField (validator=[FileExtensionValidator (allowed_extensions=['pdf', 'dokter'])])

Dalam blok kode di atas, file FileUploadForm kelas menggunakan FileExtensionValidator untuk mengizinkan pengunggahan file PDF dan DOCX saja. Aplikasi akan menolak format file lainnya selama pengunggahan. Sesuaikan ekstensi yang diizinkan sesuai dengan kebutuhan aplikasi Anda.

Perlindungan CSRF

Anda dapat mencegah serangan Cross-Site Request Forgery (CSRF) menggunakan perlindungan CSRF bawaan Django. Anda harus memasukkan dalam template Anda a Token CSRF yang akan memvalidasi di sisi server.

"pos" tindakan="/menyerahkan formulir/">
{% csrf_token %}
Bidang formulir


Saat Anda menggunakan % csrf_token % etiket templat, Django menghasilkan bidang masukan tersembunyi dengan token CSRF. Token ini unik untuk setiap sesi pengguna. Ini membantu memvalidasi keaslian formulir yang dikirimkan.

Sisi server memeriksa token CSRF saat memproses pengiriman formulir. Jika token hilang atau tidak valid, Django memunculkan kesalahan Terlarang (HTTP 403). Penting untuk memastikan bahwa aplikasi Anda aman dari jenis kerentanan keamanan ini.

Menulis Formulir Aman

Saat membuat formulir, penting untuk menangani input pengguna dengan aman. Ini untuk mencegah kerentanan umum seperti injeksi SQL dan serangan XSS. Di bawah ini adalah contoh yang menunjukkan bagaimana Anda dapat membuat formulir aman di Django.

dari django impor formulir
dari django.utils.html impor melarikan diri

kelasSecureForm(formulir. Membentuk):
nama = bentuk. CharField (max_length=100)
email = formulir. Bidang Email()

defclean_name(diri sendiri):
nama = self.cleaned_data['nama']

# Sanitasi input pengguna
sanitized_name = melarikan diri (nama)
kembali sanitized_name

defclean_email(diri sendiri):
email = self.cleaned_data['surel']

# Validasi dan bersihkan input pengguna
jikabukan email.diakhiri dengan('@contoh.com'):
mengangkat formulir. Kesalahan Validasi("Domain email tidak valid")

sanitized_email = melarikan diri (email)
kembali email_sanitasi

Itu clean_name Dan clean_email metode memvalidasi dan membersihkan input pengguna. Itu clean_name metode menggunakan melarikan diri berfungsi untuk membersihkan input nama dan mencegah potensi serangan XSS.

Itu clean_email metode memvalidasi format email dan membatasi domain email ke contoh.com. Ini menimbulkan a Kesalahan Validasi jika email tidak memenuhi kriteria yang ditentukan. Tindakan ini meningkatkan keamanan formulir Anda dan melindunginya dari kerentanan umum.

Memahami Kerentanan Aplikasi Web Adalah Penting

Memahami kerentanan aplikasi web akan membantu Anda mengamankan aplikasi Anda. Ini akan melakukannya dengan membantu Anda mengidentifikasi dan mengatasi titik lemah potensial dalam aplikasi. Ini pada gilirannya akan secara signifikan mengurangi kemungkinan serangan yang berhasil.