2011-02-09 7 views
2

내 서버가 Linux 서버이고 리셀러가 제 것입니다. 그래서 나는 WHM 패널에도 도달 할 수있다. 403 GET 데이터를 보내는 동안 금지 된 오류

GET 데이터와 같은 제공

: 금지

a.php?url=http://www.domain.com 

반환 (403).

그러나 데이터는 다음과 같이 오는 경우 : 제대로 작동

a.php?url=www.domain.com 

.

따라서 http : //은 오류를 생성합니다. 어떻게 해결할 수 있습니까?

또한,이 금지 된 403 반환 :

a.php?url=http%3a%2f%2fwww.domain.com 

감사합니다.

+0

데이터의 출처는 어디입니까? 이것을 브라우저에 입력하고 있습니까? 오류 로그에 액세스하여 어떤 리소스가 거부되었는지 정확히 알 수 있습니까? –

+0

error_log에는 아무 것도 없습니다. 브라우저에 입력하거나 양식을 통해 보내는 경우에는 mather가 필요하지 않습니다. – Eray

+0

오류 로그에 무엇이 표시됩니까? mod_security와 같은 것은 요청 URL에 포함 된 URL을 발견하면 (예 : 잠재적 인 XSS 공격을 막으려 고 시도하는 등) 액세스를 적극적으로 거부 할 수 있습니다. –

답변

1
당신이 유효하도록 쿼리 문자열을 인코딩해야

참조 urlencode()

+0

은 중요하지 않습니다. 같은 오류입니다. http : //www.girmiyor.com/c.php? q = http % 3a % 2f % 2fwww.teknoblogo.com' – Eray

+0

@Eray, URL을 다시 쓰고 있습니까? – jeroen

+0

번호. 내 ** .htaccess ** 파일이 비어 있습니다. – Eray

0

재 : 404 - 아마도 당신이 어딘가에 경로에 쿼리 문자열을 다시 작성하고, 당신은에 AllowEncodedSlashes이 없어?

4

이것은 확실히 mod_security CoreRules 중 하나입니다. 나는 이전 호스트에서 똑같은 문제를 겪었습니다. 그러나 규칙 이름은 기억이 안납니다.

핵심 규칙 버전을 조사해야합니다. 2.1.1은 현재의 것이며, 그 특유의 필터를 완화 시켰을 수도 있습니다. 업데이트 또는 재구성이 도움이되지 않는다면 url 매개 변수를 base64_encode()해야합니다 (간단한 인코딩은 mod_security에 의해 스니핑됩니다).

SecFilterDebugLog /var/log/apache2/modsec_log 
SecFilterDebugLevel 4 

는 mod_security와의 디버그 로깅을 사용합니다, 그래서 당신은 실제로 문제의 원인이되는 규칙 찾을 수 있습니다 - 당신이 (좋습니다) 사용하지 않으려면. http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/modsecurity-manual.html#07-logging

+0

Eray로 인해이 오류가 발생한다고 생각합니다. 답변이 없으면 중재자의주의를 끌기 위해 질문에 플래그를 지정하고 http://serverfault.com/으로 전송하십시오 - 알고 있어야합니다 ... – mario

0

이 오류의 원인은 mod_security의 10_asl_rules.conf입니다.

.htaccess가 해당 URL의 내용을 찾아서 금지 된 헤더를 보내는 중입니다.

관련 문제