IIS7 : web.config 파일로 액세스를 차단하는 방법?


14

IIS7을 사용하면 web.config xml 파일을 사용하여 디렉토리별로 구성 할 수 있습니다. 웹에 액세스하기를 원하지 않는 구성 파일이있는 디렉토리가 있습니다. 이에 대한 읽기 액세스를 금지하는 로컬 web.config 파일은 훌륭한 솔루션입니다.

파일에 대한 웹 액세스를 금지하려면 web.config 파일의 내용은 무엇입니까?

편집 : 이 내용이있는 web.config 파일을 파일에 넣으려고합니다.

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

그러나 여전히 디렉토리 내의 파일에 직접 액세스 할 수 있습니다. 무슨 일이야? 무슨 일이 일어나고 있는지 어떻게 디버깅합니까?

답변:


12

system.web을 사용하고 있습니다. IIS7에서는 대신 system.webServer를 사용해야합니다. 이렇게하면 ASP.NET 파일뿐만 아니라 모든 유형의 파일이 차단됩니다. 예를 들어 jpg, gif, txt 및 모든 유형의 파일을 비밀번호로 보호 할 수 있습니다.

다음과 같이 보일 것입니다 :

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

그리고 하나의 파일로 설정하려면 다음을 수행하십시오.

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

나는 1 년 후 내 자신의 대답을 뛰어 넘고 여분의 메모를 추가하고 싶었습니다. 양식 또는 Windows 인증도 활성화되어 있는지 확인해야합니다. 그렇지 않으면 제거 규칙 만 도움이됩니다. Windows 인증을 활성화 한 경우 자격 증명을 입력하라는 메시지가 표시됩니다.
Scott Forsyth-MVP

+1 마침내! 이것을 찾는 데 3 시간을 보냈습니다! 감사합니다
hofnarwillie 2016 년

5

나는 이것이 당신의 문제를 해결할 수 있다고 생각합니다.
이 web.config를 대상 디렉토리가 포함 된 디렉토리에 배치하십시오.

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

2
답변으로 제출하기 전에이를 확인할 수 있습니까?
James A Mohler

이것은 나를 위해 작동합니다. 또한 파일 이름을 세그먼트로 넣을 수 있습니다.
Soenhay

4

Web.config에서 위치 노드를 사용할 수 있습니다. 다음은 msdn에 대한 자세한 설명입니다 . 간단히 말해서 :

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

?를 사용할 수도 있습니다. 익명 사용자를 허용 (거부 / 거부)하도록 지정하는 와일드 카드


이 파일이 현재 디렉토리에 대한 액세스를 차단하지만 "css"디렉토리에 대한 액세스는 어떻게 허용합니까? 주위에 <configuration> 태그가 없습니다.
neves

귀하의 허용은 인증 된 사용자 만 허용합니다. 인증되지 않은 사용자를 원하면 allow users = "?"를 포함해야합니다. 게다가.
닛산 팬

0
  • * 모든 로그인 한 사용자를 의미합니다.
  • ? 익명 사용자를 의미합니다.

를 사용해야합니다 ?.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.