IIS7: Bagaimana cara memblokir akses dengan file web.config?


14

Saya tahu bahwa IIS7 memungkinkan saya untuk memiliki konfigurasi per direktori dengan file xml web.config. Saya memiliki direktori dengan beberapa file konfigurasi yang tidak ingin diakses oleh web. File web.config lokal yang melarang akses baca menjadi solusi yang bagus.

Apa yang seharusnya menjadi isi file web.config untuk melarang akses web ke file?

Sunting: Saya mencoba meletakkan file web.config dengan konten ini di dalam file:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
            <system.web>
                    <authorization>
                            <deny users="*" /> <!-- Denies all users -->
                    </authorization>
            </system.web>
</configuration>

Tapi saya masih bisa langsung mengakses file di dalam direktori. Apakah ada yang salah? Bagaimana cara saya men-debug apa yang terjadi?

Jawaban:


12

Anda menggunakan system.web. Di IIS7, Anda harus menggunakan system.webServer sebagai gantinya. Ini akan memblokir semua jenis file, bukan hanya file ASP.NET. Misalnya, Anda dapat melindungi kata sandi jpg, gif, txt dan semua jenis file.

Akan terlihat seperti ini:

  <system.webServer>
      <security>
          <authorization>
              <remove users="*" roles="" verbs="" />
              <add accessType="Allow" roles="Administrators" />
          </authorization>
      </security>
  </system.webServer>

Dan jika Anda ingin mengaturnya hanya untuk 1 file:

 <location path="dontlook.jpg">
     <system.webServer>
         <security>
             <authorization>
                 <remove users="*" roles="" verbs="" />
                 <add accessType="Allow" roles="Administrators" />
             </authorization>
         </security>
     </system.webServer>
 </location>

Saya menemukan jawaban saya sendiri lebih dari setahun kemudian dan ingin menambahkan catatan tambahan. Anda harus memastikan bahwa formulir atau windows auth diaktifkan juga, jika tidak hanya aturan hapus yang akan membantu. Jika Anda mengaktifkan Otentikasi Windows maka Anda akan diminta untuk memasukkan kredensial Anda.
Scott Forsyth - MVP

+1 Akhirnya! Menghabiskan 3 jam untuk menemukan ini! Terima kasih
hofnarwillie

5

Saya pikir ini bisa menyelesaikan masalah Anda.
letakkan web.config ini di direktori yang berisi direktori target:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="target directory name"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

2
Bisakah Anda memverifikasi ini sebelum mengirimkan ini sebagai jawaban.
James A Mohler

Ini bekerja untuk saya. Perhatikan juga bahwa Anda dapat menempatkan nama file sebagai segmen.
Soenhay

4

Anda dapat menggunakan node Lokasi di Web.config. Berikut ini penjelasan terperinci tentang msdn ; pendeknya:

<location path="Subdirectory">
    <system.web>
        <authorization>
            <deny users="*"/> <!-- Denies all users -->
        </authorization>
    </system.web>
</location>
<location path="Public_Directory">
    <system.web>
        <authorization>
            <allow users="*"/> <!-- Allows all users -->
        </authorization>
    </system.web>
</location>

Anda juga bisa menggunakan? wildcard untuk menentukan bahwa Anda harus (mengizinkan / menolak) pengguna anonim


Bagaimana file ini akan memblokir akses ke direktori saat ini, tetapi mengizinkan ke direktori "css"? tidak ada tag <configuration> di sekitarnya.
neves

Perbolehkan Anda hanya membolehkan pengguna yang diautentikasi. Jika Anda ingin pengguna yang tidak diautentikasi, Anda harus menyertakan allow users = "?" demikian juga.
Nissan Fan

0
  • * berarti setiap pengguna yang masuk.
  • ? berarti pengguna anonim.

Anda harus menggunakan ?.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.