Kerangka pemeriksaan sistem¶
Kerangka sistem pemeriksaan adalah kumpulan dari pemeriksaan tetap untuk memeriksa kebenaran proyek Django. Dia menemukan masalah umum dan menyediakan petunjuk untuk bagaimana memperbaiki mereka. Kerangka ini dapat diperpanjang sehingga anda dapat dengan mudah menambahkan pemeriksaan anda sendiri.
Untuk rincian bagaimana anda menambahkan pemeriksaan sendiri dan menyatukan mereka ke dalam pemeriksaan sistem Django, lihat System check topic guide.
Acuan API¶
CheckMessage¶
Peringatan dan kesalahan dimunculkan oleh sistem pemeriksaan harus contoh dari CheckMessage. Sebuah instance merangkum kesalahan atau peringatan dapat dilaporkan tunggal. Dia juga menyediakan konteks dan petunjuk yang berlaku pada pesan, dan penciri unik yang digunakan untuk tujuan penyaringan.
Argumen pembangun adalah:
levelKesederhanaan dari pesan. Gunakan satu dari nilai-nilai yang sudah ditentukan:
DEBUG,INFO,WARNING,ERROR,CRITICAL. Jika tingkatan lebih hebat atau sama denganERROR, kemudian Django akan mencegah perintah pengelolaan dari menjalankan. Pesan-pesan dengan tingkatan lebih rendah dariERROR(yaitu peringatan) dilaporkan ke konsol, tetapi dapat disenyapkan.msgDeretan kalimat (kurang dari 80 karakter) pendek menggambarkan masalah. Deretan kalimat seharusnya tidak mengandung baris baru.
hintDeretan karakter baris-tunggal menyediakan petunjuk untuk memperbaiki masalah. Jika tidak ada petunjuk disediakan, atau petunjuk adalah terbukti-sendiri dari pesan kesalahan, petunjuk dapat diabaikan, atau nilai dari
Nonedapat digunakan.objPilihan. Sebuah obyek menyediakan konteks untuk pesan (sebagai contoh, model dimana masalah ditemukan). Obyek harus menjadi model, bidang, atau pengelola atau obyek lain apapun yang menentukan cara
__str__(pada Python 2 anda butuh menentukan cara__unicode__). Cara digunakan selagi melaporkan semua pesan dan hasilnya mendahului pesan.idDeretan karakter pilihan. Sebuah penciri unik untuk masalah. Penciri harus mengikuti pola
applabel.X001, dimanaXadalah satu dari hurufCEWID, menunjukkan kesederhanaan pesan (Cfor kritis,Euntuk kesalahan dan sebagainya). Angka dapat dialokasikan dengan aplikasi, tetapi harus unik dalam aplikasi itu.
Ada subkelas-subkelas untuk membuat pesan dengan tingkatan umum lebih mudah. Ketika menggunakan mereka anda dapat megnabaikan argumen level karena dia disisipkan oleh nama kelas.
Pemeriksaan siap pakai¶
Etiket siap pakai¶
Sistem pemeriksaan Django diorganisasikan menggunakan etiket berikut:
models: memeriksa pemerintahan model, bidang dan pengertian pengelolaan.signals: Periksa pada pernyataan sinyal dan penangan pendaftaran.admin: Periksa pernyataan situs admin apapun.compatibility: Masalah potensial penandaan dengan versi ditingkatkan.security: Periksa keamanan konfigurasi terkait.templates: Periksa cetakan konfigurasi terkait.caches: Periksa penyimpanan konfigurasi terkait.urls: Memeriksa konfigurasi URL.database: Memeriksa masalah-masalah konfigurasi terkait-basisdata. Pemeriksaan basisdata tidak berjalan secara awal karena mereka melakukan lebih dar analisa kode tetap seperti pemeriksaan biasa lakukan. Mereka hanya berjalan oleh perintahmigrateatau jika anda menentukan etiketdatabaseketika memanggil perintahcheck.
Etiket database telah ditambahkan.
Beberapa pengecekan mungkin didaftarkan dengan banyak etiket.
Pemeriksaan sistem inti¶
Model¶
models.E001:
<swappable>bukan dari formulirapp_label.app_name.models.E002:
<SETTING>acuan<model>, yang belum dipasang, atau abstrak.models.E003: Model mempunyai hubungan many-to-many melalui model menengah
<app_label>.<model>.models.E004:
iddapat hanya digunakan sebagai nama bidang jika bidang juga disetelprimary_key=True.models.E005: Bidang
<field name>dari model induk<model>bentrok dengan bidang<field name>dari model induk<model>.models.E006: Bidang bentrok dengan bidang
<field name>dari model<model>.models.E007: Field
<field name>mempunyai nama kolom<column name>yang digunakan oleh bidang lain.models.E008:
index_togetherharus berupa daftar atau tuple.models.E009: Semua unsur
index_togetherharus berupa daftar atau tuple.models.E010:
unique_togetherharus berupa daftar atau tuple.models.E011: Semua unsur
unique_togetherharus berupa daftar atau tuple.models.E012:
index_together/unique_togethermengacu pada bidang tidak ada<field name>.models.E013:
index_together/unique_togethermengacu padaManyToManyField<field name>, tetapiManyToManyFieldtidak didukung untuk pilihan itu.models.E014:
orderingharus berupa tuple atau daftar (bahkan jika anda ingin memesan hanya satu bidang).models.E015:
orderingmengacu pada bidang tidak ada<field name>.models.E016:
index_together/unique_togethermengacu pada bidang<field_name>yang bukan lokal ke model<model>.models.E017: Model proxy
<model>mengandung bidang-bidang model.models.E018: Nama kolom otomatis dibangkitkan terlalu panjang untuk bidang
<field>. Panjang maksimum adalah<maximum length>untuk basisdata<alias>.models.E019: Nama kolom otomatis dibangkitkan terlalu panjang untuk bidang M2M
<M2M field>. Panjang maksimum adalah<maximum length>untuk basisdata<alias>.models.E020: Cara kelas
<model>.check()saat ini dikesampingkan.models.E021:
orderingdanorder_with_respect_totidak dapat digunakan bersama-sama.models.E022:
<function>mengandung acuan lazy pada<app label>.<model>, tetapi aplikasi<app label>tidak dipasang atau tidak menyediakan model<model>.
Bidang¶
fields.E001: Nama bidang tidak boleh berakhir dengan garis bawah.
fields.E002: Nama bidang tidak harus mengandung
"__".fields.E003:
pkadalah kata terpesan yang tidak dapat digunakan sebagai nama bidang.fields.E004:
choicesharus dapat berulang (sebagai contoh, daftar atau tuple).fields.E005:
choicesharus dapat berulang mengembalikan tuple(nilai sebenarnya, nama yang dapat dibaca manusia).fields.E006:
db_indexharus berupaNone,TrueatauFalse.fields.E007: Primary key tidak harus mempunyai
null=True.fields.E100: ``AutoField harus disetel primary_key=True.
fields.E110:
BooleanFieldtidak menerima nilai-nilai null.fields.E120:
CharFieldharus menentukan atributmax_length.fields.E121:
max_lengthharus integer positif.fields.W122:
max_lengthdiabaikan ketika digunakan denganIntegerField.fields.E130:
DecimalFieldharus ditentukan atributdecimal_places.fields.E131:
decimal_placesharus berupa integer bukan-negatif.fields.E132:
DecimalFieldharus ditentukan atributmax_digits.fields.E133:
max_digitsharus berupa integer bukan-negatif.fields.E134:
max_digitsharus lebih besar atau sama dengandecimal_places.fields.E140:
FilePathFieldharus mempunyai salah satuallow_filesatauallow_foldersdisetel ke True.fields.E150:
GenericIPAddressFieldtidak dapat menerima nilai-nilai kosong jika nilai-nilai null tidak diijinkan, sebagai nilai-nilai kosong disimpan sebagai null.fields.E160: Pilihan
auto_now,auto_now_add, dandefaultsaling eksklusif. Hanya satu dari pilihan-pilihan ini mungkin dihadirkan.fields.W161: Nilai awal tetap disediakan.
fields.E900:
IPAddressFieldtelah dipindahkan kecuali untuk dukungan dalam riwayat perpindahan.fields.W900*:
IPAddressFieldtelah diusangkan. Dukung untuk dia (kecuali dalam riwayat perpindahan) akan dipindahkan di Django 1.9. Pemeriksaan ini muncul di Django 1.7 and 1.8.fields.W901:
CommaSeparatedIntegerFieldtelah diusangkan. Dukungan untuknya (kecuali di perpindahan bersejarah) akan dipindahkan di Django 2.0.
Bidang Berkas¶
fields.E200:
uniquebukan argumen sah untukFileField.fields.E201:
primary_keybukan argumen sah untukFileField.fields.E210: Tidak dapat menggunakan
ImageFieldkarena Pillow tidak dipasang.
Sinyal¶
signals.E001:
<handler>telah terhubung ke sinyal<signal>dengan acuan lazy ke pengirim<app label>.<model>, tetapi aplikasi<app label>tidak terpasang atau tidak menyediakan model<model>.
Kesesuaian Kebelakang¶
Pemeriksaan berikut dilakukan untuk memperingati pengguna dari setiap kemungkinan masalah yang mungkin muncul sebagai sebuah hasil dari versi peningkatan.
1_6.W001: Beberapa deretan satuan proyek mungkin tidak dikerjakan sesuai harapan. Pemeriksaan ini telah dipindahkan di Django 1.8 karena menjadi salah positof.
1_6.W002:
BooleanFieldtidak mempunyai nilai awal. Pemeriksaan ini dipindahkan di Django 1.8 karena positif salah.1_7.W001: Django 1.7 merubah awal global untuk
MIDDLEWARE_CLASSES.django.contrib.sessions.middleware.SessionMiddleware,django.contrib.auth.middleware.AuthenticationMiddleware, dandjango.contrib.messages.middleware.MessageMiddlewaredipindahkan dari awal. Jika proyek anda butuh middleware ini lalu anda harus mengkonfigurasi pengaturan ini. Pemeriksaan ini dipindahkan di Django 1.9.1_8.W001: Pengaturan
TEMPLATE_*berdiri sendiri telah diusangkan di Django 1.8 dan kamusTEMPLATESmengambil hak lebih tinggi. Anda harus menaruh nilai-nilai dari pengaturan berikut kedalamTEMPLATESkamus:TEMPLATE_DIRS,TEMPLATE_CONTEXT_PROCESSORS,TEMPLATE_DEBUG,TEMPLATE_LOADERS,TEMPLATE_STRING_IF_INVALID.1_10.W001: Pengaturan
MIDDLEWARE_CLASSESdiusangkan di Django 1.10 dan pengaturanMIDDLEWAREmengambil hak lebih tinggi. Sejak anda telah menyetelMIDDLEWARE, nilai dariMIDDLEWARE_CLASSESdiabaikan.
Admin¶
Admin memeriksa semua yang dilakukan sebagai bagian dari etiket admin.
Pemeriksaan berikut dilakukan pada setiap ModelAdmin (atau subkelas) yang terdaftar dengan situs admin:
admin.E001: Nilai dari
raw_id_fieldsharus berupa daftar atau tuple.admin.E002: Nilai dari
raw_id_fields[n]mengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E003: Nilai dari
raw_id_fields[n]harus foreign key atau bidang many-to-many.admin.E004: Nilai-nilai dari
fieldsharus berupa daftar atau tuple.admin.E005: kedua
fieldsetsdanfieldsditentukan.admin.E006: Nilai dari
fieldsmengandung bidang ganda.admin.E007: Nilai dari
fieldsetsharus berupa daftar atau tuple.admin.E008: Nilai dari
fieldsets[n]harus berupa daftar atau tuple.admin.E009: Nilai dari
fieldsets[n]harus panjang 2.admin.E010: Nilai dari
fieldsets[n][1]harus berupa kamus.admin.E011: Nilai dari
fieldsets[n][1]harus mengandung kuncifields.admin.E012: Ada bidang ganda dalam
fieldsets[n][1].admin.E013:
fields[n]/fieldsets[n][m]tidak dapat menyertakan<field name>ManyToManyField, karena bidang itu secara manual menentukan sebuah hubungan model.admin.E014: Nilai dari
excludeharus berupa daftar atau tuple.admin.E015: Nilai dari
excludemengandung bidang ganda.admin.E016: Nilai dari
formharus warisan dariBaseModelForm.admin.E017: Nilai dari
filter_verticalharus berupa daftar atau tuple.admin.E018: Nilai-nilai dari
filter_horizontalharus berupa daftar atau tuple.admin.E019: Nilai dari
filter_vertical[n]/filter_vertical[n]mengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E020: Nilai dari
filter_vertical[n]/filter_vertical[n]harus berupa bidang many-to-many.admin.E021: Nilai dari
radio_fieldsharus berupa kamus.admin.E022: Nilai dari
radio_fieldsmengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E023: Nilai dari
radio_fieldsmengacu pada<field name>, yang bukanForeignKey, dan tidak mempunyai pengertianchoices.admin.E024: Nilai dari
radio_fields[<field name>]harus berupaadmin.HORIZONTALatauadmin.VERTICAL.admin.E025: Nilai dari
view_on_siteharus berupa callable atau nilai boolean.admin.E026: Nilai dari
prepopulated_fieldsharus berupa kamus.admin.E027: Nilai dari
prepopulated_fieldsmengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E028: Nilai dari
prepopulated_fieldsmengacu pada<field name>, yang bukan bidangDateTimeField,ForeignKey, atauManyToManyField.admin.E029: Nilai dari
prepopulated_fields[<field name>]harus berupa daftar atau tuple.admin.E030: Nilai dari
prepopulated_fieldsmengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E031: Nilai dari
orderingharus berupa daftar atau tuple.admin.E032: Nilai dari
orderingmempunyai pembuat urutan acak?, tetapi mengandung bidang lain juga.admin.E033: Nilai dari
orderingmengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E034: Nilai dari
readonly_fieldsharus berupa sebuah daftar atau tuple.admin.E035: Nilai dari
readonly_fields[n]adalah tidak callable, sebuah atribut dari<ModelAdmin class>, atau sebuah atribut dari<model>.
ModelAdmin¶
Pemeriksaan berikut dilakukan di setiap ModelAdmin yang terdaftar dengan situs admin:
admin.E101: Nilai dari
save_asharus boolean.admin.E102: Nilai dari
save_on_topharus boolean.admin.E103: Nilai dari
inlinesharus berupa sebuahd daftar atau tuple.admin.E104:
<InlineModelAdmin class>harus warisan dariBaseModelAdmin.admin.E105:
<InlineModelAdmin class>harus mempunyai atributmodel.admin.E106: Nilai dari
<InlineModelAdmin class>.modelharus berupaModel.admin.E107: Nilai dari
list_displayharus berupa daftar atau tuple.admin.E108: Nilai dari
list_display[n]merujuk pada``<label>``, yang merupakan bukan callable, sebuah atribut dari<ModelAdmin class>, atau sebuah atribut atau metode di<model>.admin.E109: Nilai dari
list_display[n]harus tidak berupa bidangManyToManyField.admin.E110: Nilai dari
list_display_linksharus berupa daftar, tuple atauNone.admin.E111: Nilai dari
list_display_links[n]mengacu pada<label>, yang tidak ditentukan dilist_display.admin.E112: Nilai dari
list_filterharus berupa daftar atau tuple.admin.E113: Nilai dari
list_filter[n]harus warisan dariListFilter.admin.E114: Nilai dari
list_filter[n]harus bukan warisan dariFieldListFilter.admin.E115: Nilai dari
list_filter[n][1]harus warisan dariFieldListFilter.admin.E116: Nilai dari
list_filter[n]mengacu pada<label>, yang bukan mengacu pada sebuah Bidang.admin.E117: Nilai dari
list_select_relatedharus berupa boolean, tuple atau daftar.admin.E118: Nilai dari
list_per_pageharus berupa integer.admin.E119: Nilai dari
list_max_show_allharus berupa integer.admin.E120: Nilai dari
list_editableharus berupa sebuah daftar atau tuple.admin.E121: Nilai dari
list_editable[n]mengacu pada<field label>, yang bukan sebuah atribut dari<model>.admin.E122: Nilai dari
list_editable[n]mengacu pada<label>, yang tidak berisi dilist_display.admin.E123: Nilai dari
list_editable[n]tidak dapat di kedualist_editabledanlist_display_links.admin.E124: Nilai dari
list_editable[n]mengacu pada bidang pertama dilist_display(<label>), yang tidak dapat digunakan meskipunlist_display_linksdisetel.admin.E125: Nilai dari
list_editable[n]mengacu pada<field name>, yang tidak dapat disunting melalui admin.admin.E126: Nilai dari
search_fieldsharus berupa sebuah daftar atau tuple.admin.E127: Nilai dari
date_hierarchymengacu pada<field name>, yang bukan sebuah atribut dari<model>.admin.E128: Nilai dari
date_hierarchyharus berupaDateFieldatauDateTimeField.
InlineModelAdmin¶
Pemeriksaan berikut dilakukan pada setiap InlineModelAdmin yang didaftarkan sebagai sebaris pada ModelAdmin.
admin.E201: Tidak dapat mengeluarkan bidang
<field name>, karena itu adalah foreign key pada model induk<app_label>.<model>.admin.E202:
<model>tidak mempunyaiForeignKeypada<parent model>./<model>mempunyai lebih dari satuForeignKeypada<parent model>.admin.E203: Nilai dari
extraharus berupa integer.admin.E204: Nilai
max_numharus berupa integer.admin.E205: Nilai
min_numharus berupa integer.admin.E206: Nilai dari
formsetharus warisan dariBaseModelFormSet.
GenericInlineModelAdmin¶
Pemeriksaan berikut dilakukan pada setiap GenericInlineModelAdmin yang didaftarkan sebagai berderet pada ModelAdmin.
admin.E301:
'ct_field'acuan<label>, yang bukan bidang di<model>.admin.E302:
'ct_fk_field'acuan<label>, yang bukan bidang pada<model>.admin.E303:
<model>tidak mempunyaiGenericForeignKey.admin.E304:
<model>tidak mempunyaiGenericForeignKeymenggunakan<field name>bidang jenis isi dan<field name>bidang ID obyek.
AdminSite¶
Pemeriksaan berikut dilakukan pada awalan AdminSite:
admin.E401:
django.contrib.contenttypesharus diINSTALLED_APPSuntuk menggunakan aplikasi admin.admin.E402:
django.contrib.auth.context_processors.authharus diTEMPLATESuntuk menggunakan aplikasi admin.
Sahih¶
auth.E001:
REQUIRED_FIELDSharus berupa daftar atau rekaman.auth.E002: Bidang bernama sebagai
USERNAME_FIELDuntuk model pengguna penyesuaian harus tidak disertakan diREQUIRED_FIELDS.auth.E003:
<field>harus unik karena itu dinamai sebagaiUSERNAME_FIELD.auth.W004:
<field>dinamai sebagaiUSERNAME_FIELD, tetapi itu tidak unik.auth.E005: Nama kode perizinan
<codename>bentrok dengan perizinan siap pakai untuk model<model>.auth.E006: Nama kode perizinan
<codename>digunakan untuk model<model>.auth.E007:
verbose_namedari model<model>harus berupa paling banyak 244 karakter untuk nama-nama perizinan siap pakainya menjadi paling banyak 255 karakter.auth.E008: Perizinan bernama
<name>dari model<model>tidak lebih panjang dari 255 karakter.auth.C009:
<User model>.is_anonymousharus berupa sebuah atribut atau sifat daripada sebuah metode. Mengabaikan ini adalah masalah keamanan ketika pengguna anonim akan diperlakukan sebagai terotentifikasi!auth.C010:
<User model>.is_authenticatedharus berupa sebuah atribut atau sifat daripada sebuah metode. Mengabaikan ini adalah masalah keamanan ketika pengguna anonim akan diperlakukan sebagai terotentifikasi!
Tipe Konten¶
Pemeriksaan berikut dilakukan ketika sebuah model mengandung sebuah GenericForeignKey atau GenericRelation:
contenttypes.E001: ID obyek mengacu field
<field>yang tidak-ada.contenttypes.E002: Jenis isi
GenericForeignKeymengacu field<field>yang tidak-ada.contenttypes.E003:
<field>bukanForeignKey.contenttypes.E004:
<field>bukanForeignKeypadacontenttypes.ContentType.
Keamanan¶
Pemeriksaan keamanan tidak membuat situs anda aman. Mereka tidak memeriksa kode, melalui pengenalan gangguan, atau melakukan apapun khususnya yang rumit. Tentu saja, mereka membantu melakukan sebuah otomatis, daftar centang yang mudah dijangkau. Mereka membantu anda mengingat hal-hal sederhana yang meningkatkan keamanan situs anda.
Beberapa pemeriksaan ini mungkin tidak sesuai untuk konfigurasi penyebaran tertentu anda. Sebagai contoh, jika anda melakukan pengalihan HTTP ke HTTPS anda dalam sebuah penyeimbang beban, itu akan menjengkelkan terus-menerus diperingati mengenai tidak memiliki SECURE_SSL_REDIRECT diadakan. Gunakan SILENCED_SYSTEM_CHECKS untuk mendiamkan pemeriksaan yang tidak dibutuhkan
Pemeriksaan berikut berjalan jika anda menggunakan pilihan check --deploy:
security.W001: Anda tidak mempunyai
django.middleware.security.SecurityMiddlewarein yourMIDDLEWARE/MIDDLEWARE_CLASSESjadi pengaturanSECURE_HSTS_SECONDS,SECURE_CONTENT_TYPE_NOSNIFF,SECURE_BROWSER_XSS_FILTER, dan :setting:`SECURE_SSL_REDIRECT`tidak akan mempunyai pengaruh.security.W002: Anda tidak mempunyai
django.middleware.clickjacking.XFrameOptionsMiddlewarediMIDDLEWARE/MIDDLEWARE_CLASSESanda, jadi halaman anda tidak akan dilayani dengan sebuah kepala'x-frame-options'. Meskipun ada alasan bagus untuk situs anda dilayani dalam sebuah kerangka, anda harus mempertimbangkan mengadakan kepala ini untuk membantu mencegah serangan clickjacking.security.W003: Anda tidak tampak menggunakan perlindungan pemalsuan permintaan lintas-situs siap pakai Django melalui middleware (
django.middleware.csrf.CsrfViewMiddlewaretidak diMIDDLEWARE/MIDDLEWARE_CLASSESanda). Mengadakan middleware adalah pendekatan teraman untuk memastikan anda tidak meninggalkan lubang apapun.security.W004: Anda belum menyetel sebuah nilai untuk pengaturan
SECURE_HSTS_SECONDS. Jika keseluruhan situs anda hanya terhadap SSL, anda mungkin ingin mempertimbangkan pengaturan sebuah nilai dan mengadakan HTTP Strict Transport Security. Pastikan membaca dokumentasi dahulu; mengadakan HSTS tanpa bertanggung jawab dapat menyebabkan serius, masalah tidak dapat diubah.security.W005: Anda belum menyetel pengaturan
SECURE_HSTS_INCLUDE_SUBDOMAINSmenjadiTrue. Tanpa ini, situs anda berpotensi rentan pada serangan melalui hubungan tidak aman ke subranah. Hanya setel ini menjadiTruejika anda yakin bajwa semua subranah dari ranah anda harus dilayani secara khusus melalui SSL.security.W006: Pengaturan
SECURE_CONTENT_TYPE_NOSNIFFanda tidak disetel menjadiTrue, jadi halaman anda tidak akan dilayani dengan kepala'x-content-type-options: nosniff'. Anda harus mempertimbangkan mengadakan kepala ini untuk mencegah peramban dari menciri jenis isi secara tidak benar.security.W007: Pengaturan
SECURE_BROWSER_XSS_FILTERanda disetel menjadiTrue, jadi halaman anda tidak akan dilayani dengan kepala'x-xss-protection: 1; mode=block'. Anda harus mempertimbangkan mengadakan kepala ini untuk mengaktifkan penyaringan XSS peramban dan membantu mencegah serangan XSS.security.W008: Pengaturan
SECURE_SSL_REDIRECTanda tidak disetel menjadiTrue. Meskipun situs anda harus tersedia terhadap kedua hubungan SSL dan bukan-SSL, anda mungkin ingin antara menyetel pengaturan ini menjadiTrueatau konfigurasi sebuah penyeimbang muatan atau peladen membalikkan-proxy ke mengalihkan semua hubungan pada HTTPS.security.W009:
SECRET_KEYanda mempunyai kurang dari 50 karakter atau kurang dari 5 karakter unik. Harap bangkitkan sebuahSECRET_KEYpanjang dan acak, jika tidak banyak dari fitur-fitur kritis-keamanan Django akan rentan pada serangan.security.W010: Anda memiliki
django.contrib.sessionsdiINSTALLED_APPSanda tetapi anda belum menyetelSESSION_COOKIE_SECUREmenjadiTrue. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna.security.W011: Anda mempunyai
django.contrib.sessions.middleware.SessionMiddlewarediMIDDLEWARE/MIDDLEWARE_CLASSESanda, tetapi anda belum menyetelSESSION_COOKIE_SECUREmenjadiTrue. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna.security.W012:
SESSION_COOKIE_SECUREtidak disetel menjadiTrue. Menggunakan kue sesi hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk membajak sesi pengguna.security.W013: Anda memiliki
django.contrib.sessionsdiINSTALLED_APPSanda, tetapi anda belum menyetelSESSION_COOKIE_HTTPONLYmenjadiTrue. Menggunakan kue sesiHttpOnlymembuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna.security.W014: Anda mempunyai
django.contrib.sessions.middleware.SessionMiddlewarediMIDDLEWARE/MIDDLEWARE_CLASSESanda, tetapi anda belum menyetelSESSION_COOKIE_HTTPONLYmenjadiTrue. Menggunakan kue sesiHttpOnlymembuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna.security.W015:
SESSION_COOKIE_HTTPONLYtidak disetel menjadiTrue. Menggunakan kue sesiHttpOnlymembuatnya lebih sulit untuk serangan penulisan lintas-situs untuk membajak sesi pengguna.security.W016:
CSRF_COOKIE_SECUREtidak disetel menjadiTrue. Menggunakan kue CSRF hanya-aman membuatnya lebih sulit untuk lalu lintas jaringan sapu tangan untuk mencuri token CSRF.security.W017:
CSRF_COOKIE_HTTPONLYtidak disetel menjadiTrue. Menggunakan kue CSRFHttpOnlymembuatnya lebih sulit untuk serangan penulisan lintas-situs untuk mencuri token CSRF.security.W018*: Anda harus mempunyai
DEBUGdisetel keTruedalam menyebarkan.security.W019: Anda mempunyai
django.middleware.clickjacking.XFrameOptionsMiddlewarediMIDDLEWARE/MIDDLEWARE_CLASSESanda, tetapiX_FRAME_OPTIONStidak disetel menjadi'DENY'. Awalan adalah'SAMEORIGIN', tetapi meskipun ada alasan bagus untuk situs anda untuk melayani bagian lain dari itu sendiri dalam sebuah kerangka, anda harus merubah itu menjadi'DENY'.security.W020:
ALLOWED_HOSTSharus tidak kosong dalam menyebarkan.
Situs¶
Pemeriksaan berikut dilakukan pada setiap model menggunakan CurrentSiteManager:
sites.E001:
CurrentSiteManagertidak dapat menemukan sebuah bidang dinamai<field name>.sites.E002:
CurrentSiteManagertidak dapat menggunakan<field>karena itu adalah bukan foreign key atau bidang many-to-many.
Basisdata¶
MySQL¶
Jika anda sedang menggunakan MySQL, pemeriksaan berikut akan dilakukan:
mysql.E001: MySQL tidak mengizinkan
CharFields unik mempunyaimax_length> 255.mysql.W002: MySQL Strict Mode tidak disetel untuk hubungan basisdata ‘<alias>’. Lihat juga Mengatur sql_mode.
Tembolok¶
Pemeriksaan berikut memeriksa bahwa pengaturan CACHES anda dengan benar dikonfigurasi:
caches.E001: Anda harus menentukan sebuah penyimpanan
'default'di pengaturanCACHES.
URL¶
Pemeriksaan berikut dilakukan di konfigurasi URL anda:
urls.W001: Corak
<pattern>URL anda menggunakaninclude()dengan sebuahregexberakhir dengan sebuah$. Pindahkan dolar dariregexuntuk menghindari masalah-masalah termasuk URL.urls.W002: Corak
<pattern>URL anda mempunyairegexdiawali dengan sebuah/. Pindahkan garis miring ini ketika itu tidak dibutuhkan. Jika corak ini adalah disasar di sebuahinclude(), pastikan corakinclude()mempunyai buntutan/.urls.W003: Corak
<pattern>URL mempunyainametermasuk sebuah:. Pindahkan titik dua, untuk menghindari dua arti acuan namespace.urls.E004: Corak
<pattern>URL anda tidak sah. Pastikan bahwaurlpatternsadalah sebuah daftar dari instanceurl().