Jadual Kandungan
BAHAGIAN 1. Keselamatan diutamakan
1.1 CSRF TOKEN
1.2 Reka bentuk keselamatan API
1.3 Beberapa item pelbagai
Pengurusan Versi 2.2
2.3 Antara Muka Gerbang
2.4 Proksi terbalik
BAHAGIAN 3. Perkhidmatan latar belakang
Rumah Operasi dan penyelenggaraan Keselamatan Bagaimana untuk menggunakan Django

Bagaimana untuk menggunakan Django

May 20, 2023 pm 05:26 PM
django

BAHAGIAN 1. Keselamatan diutamakan

Masa terbaik untuk memperbaiki kelemahan ialah semasa pembangunan.

1.1 CSRF TOKEN

Dalam rangka kerja keselamatan Django, CSRF TOKEN ialah strategi keselamatan yang penting. Walau bagaimanapun, dalam banyak kes, sesetengah pelajar yang baru berhubung dengan Django akan mendapati bahawa borang yang mereka tulis akhirnya akan melaporkan ralat semasa POST Selepas beberapa carian, mereka mendapati bahawa ia adalah masalah CSRF TOKEN, dan kemudian mengikuti dalam talian kaedah untuk membahagikan borang dengan tiga, lima dan dua Semua konfigurasi TOKEN CSRF dalam settings.py telah dialih keluar dan kod berjalan seperti biasa. Sedikit yang anda tahu bahawa operasi seperti ini akan sangat menjejaskan keselamatan tapak web dan meningkatkan kos menampal kelemahan pada peringkat seterusnya Menghapuskan isu keselamatan semasa peringkat pembangunan adalah kos yang paling rendah.

Oleh kerana dokumentasi rasmi telah menerangkan kandungan CSRF TOKEN yang berkaitan secara terperinci, penggunaan khusus tidak akan diterangkan di sini. Di sini kami mengesyorkan penggunaan yang lebih mudah, yang kurang sensitif kepada pembangun semasa pembangunan dan tidak perlu risau sama ada Token telah berjaya dihantar.

Tambahkan {% csrf_token %} pada keseluruhan halaman templat induk dan tetapkan yang berikut dalam bahagian :

Bagaimana untuk menggunakan Django

Ini cara Semua permintaan bukan GET|HEAD|OPTIONS|TRACE yang dimulakan melalui AJAX dalam JQuery akan menyertakan TOKEN CSRF secara automatik (sebahagian daripada kod untuk mendapatkan TOKEN CSRF tidak disenaraikan Jika anda menggunakan perpustakaan HTTP lain atau Ambil, buat tetapan yang sepadan Boleh.

1.2 Reka bentuk keselamatan API

Dalam sesetengah kes, perkhidmatan web kami juga akan menyediakan beberapa perkhidmatan API kepada dunia luar untuk panggilan oleh sistem lain Untuk antara muka API ini, CSRF mesti dimatikan. Jika tidak, ia tidak akan berfungsi dengan baik sama sekali. Kita juga harus mengambil langkah keselamatan lain untuk mengelakkan antara muka API daripada disalahgunakan. Sebagai tambahan kepada parameter lulus biasa, kita harus memastikan bahawa parameter ini tidak diusik oleh orang tengah, dan hanya membenarkan orang yang mempunyai kuasa untuk memanggil antara muka yang sepadan Atas sebab ini, kita perlu memperkenalkan beberapa parameter lulus tambahan: cap waktu, tanda,. kunci_akses, token_akses.

Pasangan parameter ini termasuk kunci_akses dan token_akses. access_key adalah bersamaan dengan mengenal pasti pemanggil, dan access_token adalah bersamaan dengan kunci rahsia pemanggil Kandungan access_token tidak boleh diramalkan dengan mudah, dan access_key boleh memilih rentetan yang lebih ringkas untuk kemudahan memori. Hanya apabila kedua-dua parameter sepadan, panggilan API dianggap sah.

Pilih ketepatan cap masa mengikut keperluan perniagaan, anda boleh memilih saat atau milisaat. Tujuan utama menambah cap masa adalah untuk menghalang panggilan ini daripada dimainkan semula Pelayan harus mengesahkan sama ada cap masa yang diluluskan oleh pelanggan berada dalam julat masa yang tamat tempoh harus dianggap sebagai permintaan yang menyalahi undang-undang. Untuk memastikan ketulenan parameter, tanda parameter lain perlu diperkenalkan, kerana walaupun cap masa dimainkan semula, masih terdapat risiko gangguan.

tanda ialah nilai tandatangan semua parameter Ia dijana oleh semua nilai parameter yang mengambil bahagian dalam pengiraan cincang Setiap kali parameter berubah sedikit, tanda perlu dijana semula untuk memastikan ketulenan parameter. Algoritma yang biasa digunakan ialah: mengisih nilai parameter mengikut susunan abjad kunci parameter, dan gunakan pemisah khusus untuk menyambungkan semua parameter, kemudian lakukan pengiraan cincang, dan hantar parameter tanda kepada pelayan bersama-sama. Sebagai contoh, parameter sedia ada ak=2222&at=1111&timestamp=3333&key1=aaa, selepas mengisih mengikut susunan abjad, ialah 22221111aaa3333, selepas menambah pemisah (|), ia ialah 2222(|)1111(|)aaa(|)3333, dan kemudian Rentetan ini mengira sha1 dan menjana nilai tanda. Ia agak mudah untuk menulis dalam kod Python:

Bagaimana untuk menggunakan Django

1.3 Beberapa item pelbagai

Sebagai tambahan kepada dua perkara penting di atas, terdapat juga Terdapat beberapa kawasan yang memerlukan sedikit perhatian tambahan.

Matikan mod DEBUG dalam persekitaran pengeluaran;

Tetapkan ALLOWED_HOSTS;

Gunakan ORM yang disediakan oleh Django sebanyak mungkin untuk mengelak daripada melaksanakan kenyataan SQL secara langsung melalui .raw() dan kaedah lain dielakkan, anda mesti Escape parameter dengan betul untuk mengelakkan kelemahan suntikan SQL; 🎜>
Bahagian 2. Bagaimana untuk menggunakan

Tarik kod dari Git, gunakan PIP untuk memasang kebergantungan projek, dan jalankan perkhidmatan melalui Manage.py. ia dalam persekitaran pengeluaran Lakukan ini?
2.1 Persekitaran terpencil

Secara amnya, hanya akan ada satu persekitaran Python pada pelayan kami Apabila menggunakan, kami biasanya menggunakan pip untuk memasang kebergantungan yang diperlukan untuk projek ini direktori pakej tapak global.

Apabila menggunakan berbilang projek, kaedah memasang kebergantungan ini boleh membawa kepada konflik kebergantungan dengan mudah. Untuk memberikan contoh mudah, kami kini mempunyai dua projek, Project-A dan Project-B Kedua-dua A dan B bergantung pada versi yang berbeza bagi pakej pihak ketiga third-A Apabila kami memasang -r requirements-a.txt melalui pip , Kebergantungan ketiga-A dipasang ke dalam persekitaran Python global Apabila kami memasang pip install -r requirements-b.txt sekali lagi, third-A juga akan dipasang semula pada masa ini, jika versi yang bergantung kepada kedua-dua projek adalah tidak konsisten, contohnya Projek A memerlukan versi 1.0, dan projek B memerlukan versi 2.0, yang akan menyebabkan konflik kebergantungan dan menyebabkan pemasangan kebergantungan gagal.

Jadi bagaimana untuk menyelesaikan masalah ini? Apa yang boleh kita fikirkan dengan mudah ialah jika kita mempunyai pelbagai persekitaran pengasingan bebas dan setiap projek digunakan dalam persekitaran bebas, maka masalah ini akan diselesaikan dengan mudah. Virtualenv dilahirkan untuk menyelesaikan masalah ini Ia boleh mewujudkan persekitaran berjalan yang berasingan untuk setiap projek untuk mengelakkan konflik pergantungan.

Pengurusan Versi 2.2

Sebelum ini kami tahu cara mencipta persekitaran terpencil dan menggunakan projek berbeza dalam persekitaran berbeza, tetapi terdapat masalah Versi Python yang digunakan oleh semua persekitaran adalah sama. Sekiranya anda perlu menggunakan pelbagai versi projek Python yang berbeza, seperti Python 2.7 (Saya tahu versi ini tidak akan dikekalkan tidak lama lagi, tetapi saya akan memberikan contoh di sini), projek Python 3.6 dan Jython, memasangnya satu persatu nampaknya agak rumit, walaupun parameter kompilasi tertentu hilang secara tidak sengaja semasa penyusunan dan pemasangan dan perlu disusun semula, ia akan meningkatkan beban kerja penggunaan sedikit sebanyak.

Kami boleh menggunakan pyenv untuk mengurus masalah berbilang versi Python, dan seterusnya menggunakan pyenv plug-in pyenv-virtualenv untuk mengurus masalah berbilang versi Python dan berbilang persekitaran maya.

2.3 Antara Muka Gerbang

Selepas kami menyelesaikan masalah dalam pelbagai persekitaran, tiba masanya untuk mempertimbangkan cara menjalankan projek Jika anda ingin menggunakan python manage.py runserver 0.0.0.0 : 80, itu agak terlalu mudah.

Django telah terbina dalam pelaksanaan WSGI yang mudah untuk kami memulakan perkhidmatan web melalui kaedah di atas Jika anda hanya mahu nyahpepijat atau hanya menyediakan perkhidmatan kepada program kecil yang digunakan oleh beberapa orang, ia juga satu pilihan, walaupun penyelesaian ini tidak kelihatan begitu elegan.

Jika anda benar-benar mahu menggunakan aplikasi ke persekitaran pengeluaran sebenar, maka anda juga memerlukan Pelayan WSGI berprestasi tinggi, bukan Pelayan WSGI ringkas yang disediakan oleh django. Gunicorn dan uWSGI kedua-duanya adalah pelayan WSGI yang agak perdana. Hanya pilih salah satu daripada mereka mengikut persekitaran penggunaan sebenar.

Walau bagaimanapun, saya secara peribadi lebih suka Gunicorn Walaupun uWSGI mempunyai kelebihan dalam banyak ujian prestasi, sebab untuk memilih Gunicorn adalah kerana ia sangat mudah berbanding dengan uWSGI dan tidak mempunyai fungsi yang sangat rumit dan jarang digunakan. dan beberapa fungsi dalam uWSGI telah disokong secara beransur-ansur oleh Nginx, dan Gunicorn agak mudah dan mudah untuk dikonfigurasikan. Perkara lain yang perlu diambil perhatian ialah jika anda ingin menggunakan Windows, anda mungkin perlu menggunakan Apache+mod_wsgi.

2.4 Proksi terbalik

Selepas Pelayan WSGI kami dimulakan, kami perlu mempertimbangkan isu proksi terbalik Sebab mengapa kami menyekat Nginx untuk proksi terbalik ialah Sebab berikut:

Nginx diperlukan untuk mengendalikan sumber statik. Jika anda menetapkan mod DEBUG Django kepada False, anda akan mendapati bahawa banyak sumber statik seperti CSS dan JS tidak dapat dimuatkan Ini kerana Django tidak akan mengendalikan permintaan ini secara aktif, dan Nginx perlu membantu mengendalikannya

Gunakan Nginx untuk memuatkan baki berbilang hujung belakang. Jika perkhidmatan anda digunakan pada berbilang pelayan, atau mempunyai penggunaan utama dan sandaran, ini boleh dicapai dengan tetapan mudah pada Nginx

secara langsung Terdapat risiko keselamatan tertentu apabila uWSGI atau Gunicorn; terdedah. Ia akan menjadi lebih mudah untuk menggunakan Nginx untuk mengendalikan isu HTTP; perkhidmatan adalah sangat mudah dan hanya diakses oleh beberapa orang, tidak perlu membuat tetapan yang rumit.

2.5 Proses Daemon
Sehingga kini, kami telah berjaya menggunakan perkhidmatan dan boleh mula menyediakan perkhidmatan seperti biasa. Tetapi kami kurang memikirkannya Jika Django kami malangnya keluar atas sebab yang tidak diketahui, maka perkhidmatan Web kami akan menjadi 502. Untuk memastikan kestabilan perkhidmatan, kita perlu menjaga proses Django Apabila masalah yang tidak diketahui berlaku dan menyebabkan keluar yang tidak normal, proses yang diperlukan perlu ditarik ke atas secara automatik.

Menggunakan penyelia sebagai alat pemantauan boleh memastikan kemandirian proses Django yang stabil. Adalah penting untuk berhati-hati untuk mengelakkan kelemahan pelaksanaan arahan jauh Supervisor untuk mengelakkan kemalangan yang lebih serius.

BAHAGIAN 3. Perkhidmatan latar belakang

Secara umumnya, jika anda ingin memulakan perkhidmatan latar belakang, saderi adalah pilihan universal, tetapi banyak kali kami tidak mahu memperkenalkan pergantungan yang begitu berat, jadi kita perlu melakukannya sendiri Fikirkan cara untuk memulakan perkhidmatan latar belakang.

Kaedah mudah ialah membuat perintah manage.py, mulakan perkhidmatan latar belakang kami melalui ./manage.py runcommand, dan kawal mula dan berhenti perkhidmatan dengan menulis skrip shell, atau uruskannya melalui penyelia.

Jika anda mahu proses latar belakang bermula dan berhenti pada masa yang sama dengan perkhidmatan Web, maka meletakkannya dalam wsgi.py ialah pilihan yang baik Mulakan perkhidmatan latar belakang yang berkaitan dalam wsgi.py dan mulakannya. Walau bagaimanapun, pendekatan ini tidak cukup fleksibel Apabila perkhidmatan Web atau perkhidmatan latar belakang perlu dikemas kini secara berasingan, kedua-duanya perlu dimulakan semula Namun, menggunakan kaedah pertama, salah satu perkhidmatan boleh dikemas kini secara berasingan.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyemak versi django Bagaimana untuk menyemak versi django Dec 01, 2023 pm 02:25 PM

Langkah-langkah untuk menyemak versi Django: 1. Buka terminal atau tetingkap command prompt 2. Pastikan Django tidak dipasang, anda boleh menggunakan alat pengurusan pakej untuk memasangnya dan masukkan perintah pip install django; Selepas pemasangan selesai, anda boleh menggunakan python -m django --version untuk menyemak versi Django.

Django vs. Flask: Analisis perbandingan rangka kerja web Python Django vs. Flask: Analisis perbandingan rangka kerja web Python Jan 19, 2024 am 08:36 AM

Django dan Flask adalah kedua-duanya peneraju dalam rangka kerja Web Python, dan kedua-duanya mempunyai kelebihan dan senario yang boleh digunakan. Artikel ini akan menjalankan analisis perbandingan kedua-dua rangka kerja ini dan memberikan contoh kod khusus. Pengenalan Pembangunan Django ialah rangka kerja Web berciri penuh, tujuan utamanya adalah untuk membangunkan aplikasi Web yang kompleks dengan cepat. Django menyediakan banyak fungsi terbina dalam, seperti ORM (Pemetaan Hubungan Objek), borang, pengesahan, bahagian belakang pengurusan, dsb. Ciri-ciri ini membolehkan Django mengendalikan besar

Kebaikan dan Keburukan Rangka Kerja Django: Semua yang Anda Perlu Tahu Kebaikan dan Keburukan Rangka Kerja Django: Semua yang Anda Perlu Tahu Jan 19, 2024 am 09:09 AM

Django ialah rangka kerja pembangunan lengkap yang merangkumi semua aspek kitaran hayat pembangunan web. Pada masa ini, rangka kerja ini merupakan salah satu rangka kerja web yang paling popular di seluruh dunia. Jika anda bercadang untuk menggunakan Django untuk membina aplikasi web anda sendiri, maka anda perlu memahami kelebihan dan kekurangan rangka kerja Django. Berikut ialah semua yang anda perlu ketahui, termasuk contoh kod khusus. Kelebihan Django: 1. Pembangunan pesat-Djang boleh membangunkan aplikasi web dengan cepat. Ia menyediakan perpustakaan yang kaya dan dalaman

Bagaimana untuk menyemak versi django Bagaimana untuk menyemak versi django Nov 30, 2023 pm 03:08 PM

Cara menyemak versi django: 1. Untuk menyemak melalui baris arahan, masukkan arahan "python -m django --version" dalam terminal atau tetingkap baris arahan 2. Untuk menyemak dalam persekitaran interaktif Python, masukkan "import django print(django. get_version())" code; 3. Semak fail tetapan projek Django dan cari senarai bernama INSTALLED_APPS, yang mengandungi maklumat aplikasi yang dipasang.

Apakah perbezaan antara versi django? Apakah perbezaan antara versi django? Nov 20, 2023 pm 04:33 PM

Perbezaannya ialah: 1. Siri Django 1.x: Ini ialah versi awal Django, termasuk versi 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8 dan 1.9. Versi ini menyediakan fungsi pembangunan web asas; 2. Siri Django 2.x: Ini adalah versi jangka pertengahan Django, termasuk versi 2.0, 2.1, 2.2 dan lain-lain siri Django Termasuk versi 3.0, 3, dsb.

Cara menaik taraf versi Django: langkah dan pertimbangan Cara menaik taraf versi Django: langkah dan pertimbangan Jan 19, 2024 am 10:16 AM

Cara menaik taraf versi Django: langkah dan pertimbangan, contoh kod khusus diperlukan Pengenalan: Django ialah rangka kerja Web Python yang berkuasa yang sentiasa dikemas kini dan dinaik taraf untuk memberikan prestasi yang lebih baik dan lebih banyak ciri. Walau bagaimanapun, bagi pembangun yang menggunakan versi lama Django, menaik taraf Django mungkin menghadapi beberapa cabaran. Artikel ini akan memperkenalkan langkah dan langkah berjaga-jaga tentang cara untuk meningkatkan versi Django dan memberikan contoh kod khusus. 1. Sandarkan fail projek sebelum menaik taraf Djan

Adakah django bahagian hadapan atau belakang? Adakah django bahagian hadapan atau belakang? Nov 21, 2023 pm 02:36 PM

Django ialah bahagian belakang. Butiran: Walaupun Django terutamanya rangka kerja bahagian belakang, ia berkait rapat dengan pembangunan bahagian hadapan. Melalui ciri seperti enjin templat Django, pengurusan fail statik dan API RESTful, pembangun bahagian hadapan boleh bekerjasama dengan pembangun bahagian belakang untuk membina aplikasi web yang berkuasa dan boleh skala.

Django, Flask dan FastAPI: Rangka kerja manakah yang sesuai untuk pemula? Django, Flask dan FastAPI: Rangka kerja manakah yang sesuai untuk pemula? Sep 27, 2023 pm 09:06 PM

Django, Flask dan FastAPI: Rangka kerja manakah yang sesuai untuk pemula? Pengenalan: Dalam bidang pembangunan aplikasi web, terdapat banyak rangka kerja Python yang sangat baik untuk dipilih. Artikel ini akan menumpukan pada tiga rangka kerja yang paling popular, Django, Flask dan FastAPI. Kami akan menilai ciri mereka dan membincangkan rangka kerja yang terbaik untuk digunakan oleh pemula. Pada masa yang sama, kami juga akan menyediakan beberapa contoh kod khusus untuk membantu pemula lebih memahami rangka kerja ini. 1. Django: Django

See all articles