Bagikan melalui


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

  1. Pada taskbar, klik Manajer Server.
  2. Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
  3. Di wizard Tambahkan Peran dan Fitur , klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
  4. Pada halaman Peran Server , perluas Server Web (IIS), perluas Server Web, perluas Keamanan, lalu pilih Pemfilteran Permintaan. Klik Berikutnya.
    Cuplikan layar opsi Pemfilteran Permintaan disorot. .
  5. Pada halaman Pilih fitur, klik Berikutnya.
  6. Pada halaman Konfirmasi pilihan instalasi, klik Instal.
  7. Pada halaman Hasil , klik Tutup.

Windows 8 atau Windows 8.1

  1. Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
  2. Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
  3. Perluas Layanan Informasi Internet, perluas Layanan Web Seluruh Dunia, perluas Keamanan, lalu pilih Pemfilteran Permintaan.
    Cuplikan layar folder Pemfilteran Permintaan yang disorot.
  4. Klik OK.
  5. Klik Tutup.

Windows Server 2008 atau Windows Server 2008 R2

  1. Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Server.
  2. Di panel hierarki Manajer Server , perluas Peran, lalu klik Server Web (IIS).
  3. Di panel Server Web (IIS), gulir ke bagian Layanan Peran , lalu klik Tambahkan Layanan Peran.
  4. Pada halaman Pilih Layanan Peran dari Wizard Tambahkan Layanan Peran, pilih Pemfilteran Permintaan, lalu klik Berikutnya.
    Cuplikan layar opsi Pemfilteran Permintaan disorot dan satu-satunya opsi yang dipilih.
  5. Pada halaman Konfirmasi Pilihan Penginstalan , klik Instal.
  6. Pada halaman Hasil , klik Tutup.

Windows Vista atau Windows 7

  1. Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
  2. Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan Fitur Windows.
  3. Perluas Layanan Informasi Internet, lalu World Wide Web Services, lalu Keamanan.
  4. Pilih Minta Pemfilteran, lalu klik OK.
    Cuplikan layar folder Pemfilteran Permintaan yang dipilih dan disorot.

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

  1. 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).
  2. Di panel Koneksi , buka koneksi, situs, aplikasi, atau direktori yang ingin Anda ubah pengaturan pemfilteran permintaannya.

  3. Di panel Beranda , klik dua kali Pemfilteran Permintaan.
    Cuplikan layar panel Beranda Beranda Situs Web Default.

  4. Klik Edit Pengaturan Fitur... di panel Tindakan .
    Cuplikan layar Pemfilteran Permintaan, memperlihatkan tab Ekstensi Nama File dan Segmen Tersembunyi.

  5. Tentukan opsi Anda, lalu klik OK.
    Cuplikan layar kotak dialog Edit Pengaturan Pemfilteran Permintaan, memperlihatkan empat bidang yang dapat dipilih. 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

  1. 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).
  2. Di panel Koneksi , buka koneksi, situs, aplikasi, atau direktori yang ingin Anda ubah pengaturan pemfilteran permintaannya.

  3. Di panel Beranda , klik dua kali Pemfilteran Permintaan.
    Cuplikan layar Beranda Situs Web Default, memperlihatkan opsi Aturan Pelacakan Permintaan Gagal, Pemetaan Handler, dan Pengalihan H T T P.

  4. Di panel Pemfilteran Permintaan , klik tab Header , lalu klik Tambahkan Header... di panel Tindakan .
    Cuplikan layar panel Pemfilteran Permintaan, memperlihatkan tab Kata Kerja dan Header H T T P.

  5. Dalam kotak dialog Tambahkan Header , masukkan header HTTP dan ukuran maksimum yang Anda inginkan untuk batas header, lalu klik OK.
    Cuplikan layar kotak dialog Tambahkan Header, memperlihatkan bidang batas Header dan Ukuran.

    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()