2015-01-19 2 views
1

나는 우리를 계속 지키기 위해 끔찍한 끔찍한 htaccess 코드를 만들었지 만, 끔찍한 코드는 모두를 불행하게 만듭니다. 따라서 여기에 있습니다 :참조 자에 대한 기본 인증을 무시하십시오.

DomainA.com은 DomainB.com 및 DomainB.com의 모든 하위 도메인을 끌어 와야하는 몇 가지 코드를 호스트합니다. 우리가 프로토콜을 정의하거나하지 않도록

<If "%{HTTP_REFERER} == 'https://DomainB.com/testpage1.php'"> 
</If> 

<ElseIf "%{HTTP_REFERER} == 'https://DomainB.com/testpage2.php'"> 
</ElseIf> 

<ElseIf "%{HTTP_REFERER} == 'https://DomainB.com/testpage3.php'"> 
</ElseIf> 

<Else> 
AuthType Basic 
AuthName "Our Walled Garden - Login Credentials Required" 
AuthUserFile /path/to/.htpasswd 
Require valid-user 
</Else> 

는 당신이 우리가이 아래로 트림 도와 드릴까요 : 여기

작동 끔찍한 우리가 함께했다 코드와 DomainA.com의 htaccess로 파일을 때렸다입니다 요청에 대한 특정 하위 도메인? 나는 일부 정규식으로 주위를 망쳐 봤는데, 난 심지어 정규식 일치 IF 블록에서 일할 수 없습니다.

+0

실제로 htaccess 파일이 어떻게 생겼습니까? 어떤 버전의 아파치를 사용하고 있습니까? –

+0

Apache 2.4.10. IF 블록은 분명히 2.4에서 새로운 것입니다. 나는 그들과 결혼하지도 않았다. 그들은 지금 당장 일을 마쳤습니다. – SageAMDP

답변

2

정규 표현식을 사용하려면 Require 절과 함께 SetEnvIf을 사용할 수 있습니다.

은 아마 뭔가 같은 :

여러 Require 지시가
SetEnvIfNoCase Referer ^https://DomainB\.com/(testpage1|testpage2|testpage3)\.php$ noauth=1 

AuthType Basic 
AuthName "Our Walled Garden - Login Credentials Required" 
AuthUserFile /path/to/.htpasswd 
Require valid-user 
Require env noauth 

, 그들은 자동으로 (Require apache 2.4 docs 참조) "모든 필요"로 분류됩니다.

Setenv 지시문은 referer와 일치하며 "noauth"env 변수가 일치하면 일치합니다. 그런 다음 require 지시문은 유효한 사용자 또는 noauth env 변수가 액세스를 만족시킬 것이라고 말합니다.

리퍼러는 쉽게 위조 될 수 있으므로 정확히 안전하지는 않습니다.

+0

위조자가 위조 될 수 있음을 이해하지만이 문은 민감한 콘텐츠를 숨기지 않는 임시 조치입니다. 우리는 사람들이이 시점에서 사이트의 다른 부분을 바라는 것을 원하지 않습니다. – SageAMDP

+0

나는 왜 이것이 작동하고 전에 연구했던 모든 것이 었는지 모른다. 감사합니다. – SageAMDP

+1

@SageAMDP 다른 답변의 대부분은 아파치 2.2에 대한 것이기 때문에, 인증 시스템은 2.4에서 개정되었습니다 –

관련 문제