Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 20025|Jawab: 0

[ASP.NET] ASP.NET Lulus Parameter, batas panjang, dan tindakan pencegahan penggunaan.

[Salin tautan]
Diposting pada 08/03/2018 10.18.07 | | | |
1. Penyebab masalah
Dalam lampiran "Masalah Pasca-Rilis" dari statistik bug setelah rilis proyek, ada:   



Sebagai akumulasi pengalaman, masalah, penyebab dan solusi ini akan dimasukkan dalam daftar periksa, kemudian:
Pertanyaan pertama: Apakah batas atas parameter URL referensi akurat? Apa batas atasnya?
Pertanyaan kedua: Mengapa ada batasan data saat POST? Apakah batasnya 128K?  
2. Analisis masalah
1. Yang pertama:
1) Tidak ada batas atas parameter dalam URL. Masalahnya sebenarnya IE memiliki batas panjang pada URL.
2) Spesifikasi protokol HTTP juga tidak membatasi panjang URL. Batas ini adalah batasan yang diberlakukan oleh browser dan server tertentu. Batas panjang URL IE adalah 2083 byte (2K+35). Untuk browser lain seperti Netscape, FireFox, dll., Tidak ada batas panjang teoretis, dan batasnya tergantung pada dukungan sistem operasi. [Referensi 1]
3) "Parameter panjang variabel diteruskan melalui URL" sebenarnya berarti bahwa metode GET digunakan saat mengirimkan formulir, bukan metode POST. Apa yang menyebabkan potensi kesalahan ini adalah penggunaan metode GET untuk mengirimkan data formulir. Karena metode GET meneruskan data dalam URL ke server untuk diproses.
4) Perhatikan bahwa batas ini adalah seluruh panjang URL, bukan hanya panjang data nilai parameter Anda.
5) Karena ini adalah batas panjang URL IE, metode GET dan metode POST memiliki batasan ini.
(Silakan lihat dokumen terkait untuk detail tentang metode GET dan POST dari FORM [Ref. 2])  
Rekomendasi:
1) Pahami lingkungan tempat aplikasi berada, seperti lingkungan browser dan server aplikasi web, dan pahami batasan parameter spesifiknya.
2) Gunakan metode POST sebanyak mungkin untuk mengirimkan data yang kompleks. Catatan: Ketika FORM tidak menulis atribut metode, defaultnya adalah menggunakan metode GET.
Kesimpulan (tulis ke Daftar Periksa):
Saat mengirimkan data menggunakan metode GET, Anda perlu mempertimbangkan batas panjang URL 2083 byte di lingkungan IE.
2. Yang kedua:
1) Secara teoritis, POST tidak memiliki batas ukuran. Spesifikasi protokol HTTP juga tidak memiliki batas ukuran.
2) "Ada batas ukuran 128K untuk data POST" tidak cukup akurat, tidak ada batasan untuk data POST, dan kekuatan pemrosesan prosesor server memainkan peran yang membatasi.
3) Untuk program ASP, ada batas panjang data 100K ketika objek Permintaan memproses setiap bidang formulir. Tetapi dengan Request.BinaryRead tidak ada batasan seperti itu. Untuk solusi yang memerlukan pemrosesan lebih dari 100 ribu data domain formulir, silakan lihat [Ref. 3] di bawah ini.
4) Dengan ekstensi, untuk IIS 6.0, Microsoft telah meningkatkan pembatasan untuk alasan keamanan [Ref. 4]. Kita juga perlu memperhatikan:
   IIS 6.0 default ke maksimum 200 KB data ASP POST, dan batasnya adalah 100 KB per bidang formulir.
    Ukuran default file unggahan IIS 6.0 adalah 4MB.
    IIS 6.0 default ke header permintaan maksimum 16KB.
    Batasan ini tidak tersedia sebelum IIS 6.0.
Rekomendasi:
1) Mengetahui pengaturan default dari lingkungan yang berjalan akan membantu Anda merancang dan memecahkan masalah yang muncul dengan cepat.
2) Versi server harus dipertimbangkan. Setiap versi IIS memiliki pengaturan default yang berbeda untuk parameter ini, jadi jika perlu, temukan informasi dan susun tabel perbandingan. Dengan cara ini, ada referensi untuk pengembangan dan pengujian.
3) Batasan IIS 6.0 ini sebenarnya hanyalah pengaturan defaultnya, dan Anda dapat memodifikasinya di lingkungan aplikasi yang sebenarnya.
    Di WINNT/system32/inetsrv/MetaBase.xml, definisi defaultnya adalah:
        AspBufferingLimit="4194304" sesuai dengan ukuran maksimum file yang diunggah
        AspMaxRequestEntityAllowed="204800" sesuai dengan jumlah maksimum data di POST
        ...
Kesimpulan (tulis ke Daftar Periksa):
Saat menggunakan ASP, Anda perlu mempertimbangkan bahwa formulir POST memiliki batas 100KB per bidang untuk pemrosesan baca umum. Pertimbangkan apakah akan menggunakan Request.Binary.





Mantan:asp.net mvc mengatur posting formulir untuk mengizinkan pengiriman HTML
Depan:Sistem.Linq.Dinamis
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com