답변:
이 오류 메시지는 HTTP 호스트 헤더 공격으로부터 보호하기 위해 Drupal 8에 추가 된 기능 에서 발생합니다 . 이 기능은 패치에 대해 생성 된 변경 레코드 에도 설명되어 있습니다 .
기본적으로 HTTP Host 헤더 를 악의적 인 목적으로 스푸핑하고 Drupal이 여러 하위 시스템 (특히 링크 생성)에서 다른 도메인 이름을 사용하도록 속일 수있었습니다. 즉, HTTP 호스트 헤더는 사용자 입력으로 간주해야하며 신뢰할 수 없습니다.
이를 막기 위해 새로운 설정 인 $settings['trusted_host_patterns']
Drupal 8이 추가되어 사이트에서 실행할 수있는 "신뢰할 수있는"호스트 이름 목록을 구성했습니다. 설정은 실행하려는 호스트 이름을 나타내는 구분 기호없이 정규식 패턴의 배열이어야합니다.
예를 들어 단일 호스트 이름 "www.example.com"에서 사이트를 실행중인 경우이를 설정에 추가해야합니다 (보통 ./sites/default/settings.php
).
$settings['trusted_host_patterns'] = array(
'^www\.example\.com$',
);
을 참고 ^
, \.
하고 $
. 이것들은 PCRE 구문 입니다. 이는 "www.example.com"을 정확히 시작과 끝에 추가하지 않고 정확하게 일치 시키려면 점을 와일드 카드 문자가 아닌 점으로 처리해야한다는 의미입니다.
"example.com"에서 실행중인 경우 다음을 사용하십시오.
$settings['trusted_host_patterns'] = array(
'^example\.com$',
);
여러 도메인 및 / 또는 하위 도메인의 사이트를 실행해야하고 표준 URL 리디렉션을 수행하지 않는 경우 설정은 다음과 같습니다.
$settings['trusted_host_patterns'] = array(
'^example\.com$',
'^.+\.example\.com$',
'^example\.org',
'^.+\.example\.org',
);
이를 통해 사이트는 모든 하위 도메인이 포함 된 example.com 및 example.org의 모든 변형을 실행할 수 있습니다.
$settings['trusted_host_patterns']
적절한 값으로 조정 하면 사이트를 다시 찾아 볼 수 있습니다.
상태 보고서 페이지 (admin / reports / status)에서 신뢰할 수있는 호스트 설정 상태를 확인할 수도 있습니다.
설정을 모두 제거하면 신뢰할 수있는 호스트 메커니즘이 사용되지 않으며 상태 보고서 페이지에 오류가 표시됩니다. 또한 사이트가 취약한 HTTP 호스트 헤더 공격 일 수도 있습니다.
이 설정이 구성되어 있고이 메시지가 표시되면 정규식 구문을 엉망으로 만들었을 수 있습니다. 이 경우 첫 번째 예를보고 설정에 복사 / 붙여 넣기를 한 다음 사이트가 실행되는 호스트 이름을 반영하도록 편집하십시오.
trusted_host_patterns
설정 파일에 변수 가 있기 때문에 발생 합니다. 로컬 환경에서 작업하고 있고이를 재정의하려면 settings.local.php
파일 에서 다음 섹션을 정의 하십시오.
/*
* Drupal Trusted Host Patterns
*/
$settings['trusted_host_patterns'] = [];
또는 더 일반적인 패턴 :
$settings['trusted_host_patterns'] = [ '.*' ];
$settings['trusted_host_patterns'] = array(
'^172\.20.\0.\3$',
'^localhost$',
);
가장 간단한 솔루션이지만, 악의적 인 목적으로 HTTP 호스트 헤더를 스푸핑하지 않도록 적절한 값을 설정해야하므로 권장하지 않습니다. 귀하의 웹 사이트가 귀하의 로컬 사이트에서만 실행되고 있다면 괜찮을 것입니다.
신뢰할 수있는 호스트 이름 구성의 새로운 설정을 참조하십시오 .
이 문제는 다음과 같은 경우에도 발생합니다
<VirtualHost *:443>
당신이해야 할 때
<VirtualHost *:80>
개발 / 테스트 환경과 같은 비 SSL 설정에서 설정하고 포트 80에서 사이트에 액세스하려고
이는 서버의 신뢰할 수있는 호스트 구성 때문입니다. 도메인 이름 또는을 변경하면 생성 될 수 있습니다 'trusted_host_patterns'
. probleme를 해결하려면에 새 도메인을 추가 DRUPAL_ROOT/sites/SITE_FOLDER/settings.php
(예 : sites/defaults/settings.php
)
예 : 도메인 이름 = newdomain.com
$settings['trusted_host_patterns'] = array(
'^newdomain.com\.loc$',
'^www\.newdomain.com\.loc$',
);