Pertanyaan Mengapa DotNetNuke memiliki validasi yang dinonaktifkan?


Adakah yang bisa menjelaskan mengapa DotNetNuke dikonfigurasi dengan validasi permintaan dan validasi event dinonaktifkan? Keduanya berada di level web.config untuk pemasangan default yang tampaknya merupakan pendekatan regresif. Adakah alasan yang kuat untuk ini dan apa dampak fungsionalnya terhadap DotNetNuke jika mereka dihidupkan kembali?

Validasi masukan yang seharusnya tepat harus terjadi dalam kode, tetapi perilaku kerangka NET asli. Selalu merupakan fallback yang bagus.

Memperbarui: pemikiran lebih lanjut tentang ini Minta Validasi, DotNetNuke, dan utopia desain


5
2018-02-25 01:47


asal


Jawaban:


Ternyata orang-orang di DotNetNuke telah menonaktifkan ini untuk memfasilitasi pengajuan konten HTML melalui kontrol teks kaya. Mematikan kedua permintaan dan validasi peristiwa adalah berdasarkan desain.

Saya lebih suka melihat ini dilakukan pada tingkat halaman di mana diperlukan. Validasi global sama sekali tidak membebaskan pengembang dari memvalidasi masukan di setiap titik di mana ia ditangkap tetapi saya masih mempertahankan memiliki fitur ini adalah asuransi yang baik dan melumpuhkannya memang menciptakan risiko. Saya akan sangat tertarik untuk melihat berapa banyak situs DNN di luar sana yang memiliki kerentanan XSS sebagai akibat dari tidak adanya validasi global yang dikombinasikan dengan praktik pembangunan yang buruk.


4
2018-02-25 23:21



Validasi global dari semua input adalah praktik yang buruk. Seperti kebanyakan aplikasi DotNetNuke bekerja berdasarkan fungsi berdasarkan fungsi dasar untuk validasi input.

Pembuatan kode yang rentan sangat tergantung pada bagaimana input pengguna digunakan. Misalnya SQL Injection dan XSS keduanya bergantung pada karakter kontrol yang sangat berbeda. Injeksi SQL dapat disebabkan oleh tidak memfilter salah satu dari tiga karakter '"\, dimana sebagian besar XSS disebabkan oleh tidak memfilter <>. Injeksi SQL juga bisa disebabkan oleh tidak menggunakan karakter kontrol, misalnya kode ini rentan terhadap SQL Injection karena tidak memiliki tanda kutip di sekitar id:

SqlCommand("SELECT username FROM users where id="+id)

Validasi masukan global seperti magic_quotes_gpc di bawah PHP juga akan gagal untuk mencegah jenis serangan ini, dan itu adalah salah satu alasan mengapa itu dihapus di PHP6.


4
2018-02-25 06:19