Request Limits <requestLimits>
Gambaran Umum
Elemen <requestLimits>
menentukan batasan pada permintaan HTTP yang diproses oleh server Web. Batas ini mencakup ukuran maksimum permintaan, panjang URL maksimum, dan panjang maksimum untuk string kueri. Selain itu, <requestLimits>
elemen dapat berisi kumpulan batas header HTTP yang ditentukan pengguna dalam <headerLimits>
elemen , yang memungkinkan Anda menentukan pengaturan kustom pada header HTTP.
Catatan
Ketika pemfilteran permintaan memblokir permintaan HTTP karena permintaan HTTP melebihi batas permintaan, IIS 7 akan mengembalikan kesalahan HTTP 404 ke klien dan mencatat salah satu status HTTP berikut dengan substatus unik yang mengidentifikasi alasan permintaan ditolak:
HTTP Substatus | Deskripsi |
---|---|
404.14 |
URL Terlalu Panjang |
404.15 |
String Kueri Terlalu Panjang |
413.1 |
Panjang Konten Terlalu Besar |
Substatus ini memungkinkan administrator Web menganalisis log IIS mereka dan mengidentifikasi potensi ancaman.
Selain itu, ketika permintaan HTTP melebihi batas header yang ditentukan dalam <headerLimits>
elemen , IIS 7 akan mengembalikan kesalahan HTTP 404 kepada klien dengan substatus berikut:
HTTP Substatus | Deskripsi |
---|---|
431 |
Header Permintaan Terlalu Panjang |
Kompatibilitas
Versi | Catatan |
---|---|
IIS 10.0 | Elemen <requestLimits> tidak dimodifikasi dalam IIS 10.0. |
IIS 8.5 | Elemen <requestLimits> tidak dimodifikasi dalam IIS 8.5. |
IIS 8.0 | Elemen <requestLimits> tidak dimodifikasi dalam IIS 8.0. |
IIS 7.5 | Elemen <requestLimits> tidak dimodifikasi dalam IIS 7.5. |
IIS 7.0 | Elemen <requestLimits> <requestFiltering> koleksi diperkenalkan di IIS 7.0. |
IIS 6.0 | Elemen menggantikan <requestLimits> fitur IIS 6.0 UrlScan [RequestLimits] . |
Siapkan
Penginstalan default IIS 7 dan yang lebih baru mencakup layanan atau fitur peran Pemfilteran Permintaan. Jika layanan atau fitur peran Pemfilteran Permintaan dihapus instalasinya, Anda dapat menginstalnya kembali menggunakan langkah-langkah berikut.
Windows Server 2012 atau Windows Server 2012 R2
- Pada taskbar, klik Manajer Server.
- Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
- Di wizard Tambahkan Peran dan Fitur , klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
- Pada halaman Peran Server , perluas Server Web (IIS), perluas Server Web, perluas Keamanan, lalu pilih Pemfilteran Permintaan. Klik Berikutnya.
. - Pada halaman Pilih fitur, klik Berikutnya.
- Pada halaman Konfirmasi pilihan instalasi, klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows 8 atau Windows 8.1
- Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
- Perluas Layanan Informasi Internet, perluas Layanan Web Seluruh Dunia, perluas Keamanan, lalu pilih Pemfilteran Permintaan.
- Klik OK.
- Klik Tutup.
Windows Server 2008 atau Windows Server 2008 R2
- Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Server.
- Di panel hierarki Manajer Server , perluas Peran, lalu klik Server Web (IIS).
- Di panel Server Web (IIS), gulir ke bagian Layanan Peran , lalu klik Tambahkan Layanan Peran.
- Pada halaman Pilih Layanan Peran dari Wizard Tambahkan Layanan Peran, pilih Pemfilteran Permintaan, lalu klik Berikutnya.
- Pada halaman Konfirmasi Pilihan Penginstalan , klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows Vista atau Windows 7
- Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan Fitur Windows.
- Perluas Layanan Informasi Internet, lalu World Wide Web Services, lalu Keamanan.
- Pilih Minta Pemfilteran, lalu klik OK.
Bagaimana Caranya
Catatan untuk pengguna IIS 7.0: Beberapa langkah di bagian ini mungkin mengharuskan Anda menginstal Paket Administrasi Microsoft untuk IIS 7.0, yang mencakup antarmuka pengguna untuk pemfilteran permintaan. Untuk menginstal Paket Administrasi Microsoft untuk IIS 7.0, silakan lihat URL berikut:
Cara mengedit pengaturan fitur pemfilteran permintaan dan batas permintaan
Buka Pengelola Layanan Informasi Internet (IIS):
Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:
- Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows 8 atau Windows 8.1:
- Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
- Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:
- Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Pengelola Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows Vista atau Windows 7:
- Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
- Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Di panel Koneksi , buka koneksi, situs, aplikasi, atau direktori yang ingin Anda ubah pengaturan pemfilteran permintaannya.
Tentukan opsi Anda, lalu klik OK.
Misalnya, Anda dapat membuat perubahan berikut:- Ubah panjang URL maksimum menjadi 2KB dengan menentukan 2048.
- Ubah panjang string kueri maksimum menjadi 1KB dengan menentukan 1024.
- Tolak akses ke kata kerja HTTP yang tidak masuk daftar dengan mengosongkan kotak centang Izinkan kata kerja yang tidak terdata .
Cara menambahkan batas untuk header HTTP
Buka Pengelola Layanan Informasi Internet (IIS):
Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:
- Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows 8 atau Windows 8.1:
- Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
- Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:
- Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows Vista atau Windows 7:
- Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
- Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Di panel Koneksi , buka koneksi, situs, aplikasi, atau direktori yang ingin Anda ubah pengaturan pemfilteran permintaannya.
Di panel Pemfilteran Permintaan , klik tab Header , lalu klik Tambahkan Header... di panel Tindakan .
Dalam kotak dialog Tambahkan Header , masukkan header HTTP dan ukuran maksimum yang Anda inginkan untuk batas header, lalu klik OK.
Misalnya, header "Jenis konten" berisi jenis MIME untuk permintaan. Menentukan nilai 100 akan membatasi panjang header "Jenis konten" menjadi 100 byte.
Konfigurasi
Atribut
Atribut | Deskripsi |
---|---|
maxAllowedContentLength |
Atribut uint opsional. Menentukan panjang maksimum konten dalam permintaan, dalam byte. Nilai defaultnya adalah 30000000 , yaitu sekitar 28,6MB. |
maxQueryString |
Atribut uint opsional. Menentukan panjang maksimum string kueri, dalam byte. Nilai defaultnya adalah 2048 . |
maxUrl |
Atribut uint opsional. Menentukan panjang maksimum URL, dalam byte. Nilai defaultnya adalah 4096 . |
Elemen Anak
Elemen | Deskripsi |
---|---|
headerlimits |
Elemen opsional. Menentukan batas ukuran untuk header HTML. |
Sampel Konfigurasi
Contoh berikut Web.config file akan mengonfigurasi IIS untuk menolak akses untuk permintaan HTTP di mana panjang header "Jenis konten" lebih besar dari 100 byte.
<configuration>
<system.webServer>
<security>
<requestFiltering>
<requestLimits>
<headerLimits>
<add header="Content-type" sizeLimit="100" />
</headerLimits>
</requestLimits>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Kode Sampel
Sampel kode berikut akan mengonfigurasi IIS untuk menolak akses untuk permintaan HTTP di mana panjang header "Jenis konten" lebih besar dari 100 byte.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"requestLimits.headerLimits.[header='Content-type',sizeLimit='100']"
PowerShell
$requestLimits = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigElement -ChildElementName 'requestLimits'
$headerLimits = Get-IISConfigCollection -ConfigElement $requestLimits -CollectionName 'headerLimits'
New-IISConfigCollectionElement -ConfigCollection $headerLimits -ConfigAttribute @{ 'header'='Content-Type'; 'sizeLimit'=100 }
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");
ConfigurationElement requestLimitsElement = requestFilteringSection.GetChildElement("requestLimits");
ConfigurationElementCollection headerLimitsCollection = requestLimitsElement.GetCollection("headerLimits");
ConfigurationElement addElement = headerLimitsCollection.CreateElement("add");
addElement["header"] = @"Content-type";
addElement["sizeLimit"] = 100;
headerLimitsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim requestFilteringSection As ConfigurationSection = config.GetSection("system.webServer/security/requestFiltering")
Dim requestLimitsElement As ConfigurationElement = requestFilteringSection.GetChildElement("requestLimits")
Dim headerLimitsCollection As ConfigurationElementCollection = requestLimitsElement.GetCollection("headerLimits")
Dim addElement As ConfigurationElement = headerLimitsCollection.CreateElement("add")
addElement("header") = "Content-type"
addElement("sizeLimit") = 100
headerLimitsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var requestLimitsElement = requestFilteringSection.ChildElements.Item("requestLimits");
var headerLimitsCollection = requestLimitsElement.ChildElements.Item("headerLimits").Collection;
var addElement = headerLimitsCollection.CreateNewElement("add");
addElement.Properties.Item("header").Value = "Content-type";
addElement.Properties.Item("sizeLimit").Value = 100;
headerLimitsCollection.AddElement(addElement);
adminManager.CommitChanges();
Vbscript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set requestLimitsElement = requestFilteringSection.ChildElements.Item("requestLimits")
Set headerLimitsCollection = requestLimitsElement.ChildElements.Item("headerLimits").Collection
Set addElement = headerLimitsCollection.CreateNewElement("add")
addElement.Properties.Item("header").Value = "Content-type"
addElement.Properties.Item("sizeLimit").Value = 100
headerLimitsCollection.AddElement(addElement)
adminManager.CommitChanges()