X-Powered-By 제거


137
  1. PHP에서 X-Powered-By 헤더를 어떻게 제거합니까? 나는 Apache Server에 있고 PHP 5.21을 사용합니다. 5.21에서 지원하지 않으므로 php에서 header_remove 함수를 사용할 수 없습니다. Header unset X-Powered-By를 사용했는데 로컬 시스템에서는 작동했지만 프로덕션 서버에서는 작동하지 않았습니다.

  2. PHP가 ver <5.3에 대해 header_remove ()를 지원하지 않으면 대안이 있습니까?


프로덕션의 PHP 버전 : PHP / 5.2.13 로컬의 PHP 버전 : PHP / 5.2.11 프로덕션의 Apache 버전 : Apache / 2.2.15 (Unix) 로컬의 Apache 버전 : Apache 2.0.63 (Mac의 MAMP 사용)
Castor

또한 부활절 달걀을 조심하십시오 .
Pacerier

답변:


236

나는 그것이 PHP.iniexpose_php설정에 의해 제어된다고 생각합니다 .

expose_php = off

PHP가 서버에 설치되어 있다는 사실을 웹 서버 헤더에 추가하여 PHP가 공개 할 수 있는지 여부를 결정합니다. 어떤 식 으로든 보안 위협은 아니지만 서버에서 PHP를 사용할지 여부를 결정할 수 있습니다.

직접적인 보안 위험은 없지만 David C가 지적한 것처럼 오래된 (그리고 취약한) PHP 버전을 노출시키는 것은 사람들이 그것을 시도하고 공격하도록 초대 할 수 있습니다.


30
'어쨌든 보안 위협은 없습니다'. 호스팅 된 서버에서 실행되는 이전 버전의 PHP에는 해당되지 않을 수 있습니다. 해커가 과거 버전에서 잘 문서화 된 '구멍'을 이용할 수 있다고 들었습니다. 이 사실을 숨기는 것이 좋습니다 ....
David

14
"완전히 최신"인 것은 거짓 긍정입니다. 정보를 모두 비활성화하는 것이 좋습니다. 어제 릴리스 된 버전에 이미 위협이 노출되었을 수 있으며 업그레이드주기가 얼마나 공격적인 지에 따라 일정 기간 동안 노출 될 수 있습니다. 모두 추측하는 것이 좋습니다. nginx 버전도 포함하여 최대한 숨 깁니다.
Mike Purcell

1
@David, 그가 의미하는 바는 이미 직면 한 보안 위협에 추가 되지 않는다는 것 입니다.
Pacerier

7
X-Powered-By 헤더에 대해 잘못된 값을 의도적으로보고 할 수 있으며보고해야합니다. 예를 들어 PHP를 실행하는 경우 공격자가 웹 서버의 소프트웨어 구성을 식별하는 속도를 늦추는 방법으로 X-Powered-By : ASP.NET 헤더를 보낼 수 있습니다. 공격자에게 거위 추적을 내려 스캔 속도를 늦 춥니 다.
Chaoix

3
@Pacerier는 물론 보안 위협에 추가됩니다. 해커는 쉬운 먹이를 찾고있는 1000 개의 사이트를 검색합니다. 이전 버전에있을 때이 헤더를 사용하면 이전에 무시했을 때 서버가 대상을 지정합니다. 직접적인 방식으로 보안 위협에 추가됩니다. 최신 상태를 유지하더라도 아직 적용되지 않은 업데이트가있는 짧은 시간 내에 위협에 추가 될 수 있습니다.
Nigel B. Peck


50

expose_php 지시문 을 비활성화하여 PHP의 대화를 음소거 하지 않으면 ( php.ini에 액세스해야 함 ) Apache Header지시문 을 사용 하여 헤더 필드를 제거 할 수 있습니다 .

Header unset X-Powered-By

3
프로덕션 서버에서 작동하지 않습니다. 그래도 로컬 컴퓨터에서 작동하고 있습니다. 왜 이런 일이 일어나고 있는지에 대한 아이디어가 있습니까?
캐스터

@Castor 로컬 및 프로덕션 시스템에서 어떤 서버 버전을 사용하고 있습니까? PHP 설정에 차이가 있습니까?
Pekka

프로덕션의 PHP 버전 : PHP / 5.2.13 로컬의 PHP 버전 : PHP / 5.2.11 프로덕션의 Apache 버전 : Apache / 2.2.15 (Unix) 로컬의 Apache 버전 : Apache 2.0.63 (Mac의 MAMP 사용)
Castor

1
@Castor : 두 서버 모두에서 mod_headers를 사용할 수 있습니까? 그리고 FileInfo 를 재정의 할 수 있습니까 ( httpd.apache.org/docs/2.2/mod/core.html#allowoverride 참조 )?
Gumbo

@Gumbo 예, mod_headers는 두 서버에서 모두 사용할 수 있습니다. 그리고 예, FileInfo를 무시할 수 있습니다.
캐스터

24
if (function_exists('header_remove')) {
    header_remove('X-Powered-By'); // PHP 5.3+
} else {
    @ini_set('expose_php', 'off');
}

14

php.ini에 액세스 할 수있는 경우을 설정하십시오 expose_php = Off.


3
글쎄, PHP 코드 에서이 작업을 수행했습니다. header ( "X-Powered-By :"); X-Powered-By 헤더를 아무것도 설정하지 않고 제거했습니다. 시간과 제안에 감사드립니다.
Castor


4

다음과 같이 헤더를 보내기 전에 header () 호출을 추가하십시오.

header('X-Powered-By: Our company\'s development team');

php.ini의 expose_php 설정에 관계없이


0

이 솔루션은 나를 위해 일했습니다 :)

스크립트에 아래 줄을 추가하고 확인하십시오.

Ngnix / Apache 등의 레벨 설정이 필요하지 않을 수 있습니다.

header("Server:");
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.