Apache와 PHP 쌍방이 응답 헤더를 설정하는 실험

5666 단어 PHPApachetech

개시하다


X-Frame-Options[1], X-Content-Type-Options 등 안전한 네트워크 애플리케이션을 위해 설치해야 할 헤드는 몇 개다.하지만 사회적인 HTTP 리액션 헤드를 보면 이 헤드의 설정치가 2층 또는 2층으로 바뀐다.나는 이 영향과 원인을 고찰했다.

인스턴스


X-Frame-Options 중첩의 예


X-Frame-Options: SAMEORIGIN, SAMEORIGIN
많은 경우에 그래도 문제없다.하지만 IE는 이것을 무시하고 iframe로 읽을 수 있습니다.외관이 무엇보다 나쁘다.

두 세그먼트에 대한 X-Frame-Options의 예


X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY
IE가 위쪽보다 우선합니다.Firefox와 Chrome는 더 엄격한 쪽(DENY)보다 우선합니다.어느 쪽이든 다른 사냥꾼자리에서 읽을 수 없기 때문에 사실상 거의 문제가 없다.설정값이 같으면 예상치 못한 동작이 일어나지 않습니다.근데 자꾸 겉모습이 안 좋아.

실험


실험 내용


Apache의 헤더 설정에는 여러 가지 옵션이 있습니다.전면적으로 알고 싶다면 일본어판을 다 쓰지 못했기 때문에 영어판[2]을 보세요.
이를 참고하여 다음과 같은 설정을 한 실험을 진행하였다.또한 x는 대문자와 소문자로 구분되지만 응답 헤드의 필드 이름은 대문자와 소문자(RFC 2616)[3]를 구분하지 않으므로 문제가 없습니다.
아파치 설정
Header set X-PandA-header-test-set "Apache"
Header append X-PandA-header-test-append "Apache"
Header add X-PandA-header-test-add "Apache"
Header merge X-PandA-header-test-merge "Apache"

Header always set X-PandA-header-test-set "alwaysApache"
Header always append X-PandA-header-test-append "alwaysApache"
Header always add X-PandA-header-test-add "alwaysApache"
Header always merge X-PandA-header-test-merge "alwaysApache"
PHP 코드
header('x-PandA-header-test-set: PHP');
header('x-PandA-header-test-append: PHP');
header('x-PandA-header-test-add: PHP');
header('x-PandA-header-test-merge: PHP');
결과
HTTP/1.1 200 OK
Date: Sun, 20 Sep 2020 07:46:21 GMT
Server: Apache
X-PandA-header-test-set: alwaysApache
X-PandA-header-test-append: alwaysApache
X-PandA-header-test-add: alwaysApache
X-PandA-header-test-merge: alwaysApache
~省略:他のフィールド~
x-PandA-header-test-set: Apache
x-PandA-header-test-append: PHP, Apache
x-PandA-header-test-add: PHP
x-PandA-header-test-merge: PHP, Apache
X-PandA-header-test-add: Apache
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

결과 정보


always가 없는 set이 헤더를 덮어쓰고 PHP 설정이 사라졌습니다.always가 없는 appeend와merge의 헤더는 이중입니다.dd에서 각자 살아있다.X-Frame-Options를 이중으로 하는 웹 응용 프로그램에서는 다음과 같은 설정이 있을 수 있습니다.
Apache
Header append X-FRAME-OPTIONS "SAMEORIGIN"
PHP
header('x-Frame-Options: SAMEORIGIN');
always를 더한 경우 두 단락이지만 위에서 말한 바와 같이 거의 문제가 없다.

권장 설정


IPA 자료[4]에 이렇게 기재되어 있습니다.
Header always append X-FRAME-OPTIONS "DENY"
always와 appeend로 설정합니다.이런 식으로 하면 2층이 되지 않을 거야.하지만 두 단락이 있다.
MDN[5]에서 set을 사용합니다.
Header always set X-Frame-Options "SAMEORIGIN"
※ 데니 시
Header set X-Frame-Options "DENY"
DENY에는 always가 없지만 appeend가 아닌 set이기 때문에 PHP와 충돌할 때 덮어씁니다.이중화 없이 예쁘게 수납 가능해 보여요.

원인의 고찰


나는 이중 원인을 고찰했다.이것은 단지 나의 추측일 뿐이다.
  • 이중 원인
  • 허둥지둥 알웨이스 쓰는 것을 잊어버렸다.
  • 헤더 설정 방법을 알고 있었기 때문에 IPA 등 믿을 만한 자료를 보지 않고 설정했다.
  • 2단계 원인
  • 먼저 Apache와 PHP 두 종류로 설정합니다.
  • 아파치가 원래 설정한 곳에서 PHP의 OSS를 그대로 가져와 내용에 상관이 없다.
  • 각각 다른 인물이 마음대로 설정한다.
  • OSS와 관련, 예를 들어 WordPress는 2011년부터 추가[6]되었다."신경 쓰지 마십시오. 업데이트가 진행되면""어느덧""발생할 수 있습니다."(2012/12/14 WordPress를 추모하는 X-Frame-Options는 admin과 로그인 페이지만 있습니다.)

    참고 자료


    각주
    RFC 7034 - HTTP Header Field X-Frame-Options
    https://tools.ietf.org/html/rfc7034 ↩︎
    Apache Module mod_headers
    http://hobbit.ddo.jp/manual/en/mod/mod_headers.html ↩︎
    RFC 2616 - Hypertext Transfer Protocol
    https://tools.ietf.org/html/rfc2616 ↩︎
    IPA: "클릭 결정"에 대한 보고서는 자기도 모르게 프라이버시 정보의 비공개 설정을 공개 설정으로 변경하는 등
    https://www.ipa.go.jp/files/000026479.pdf p.10 ↩︎
    X-Frame-Options - HTTP | MDN
    https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/X-Frame-Options ↩︎
    Version 3.1.3 WordPress.org
    https://wordpress.org/support/wordpress-version/version-3-1-3/ ↩︎

    좋은 웹페이지 즐겨찾기