2014-06-09 5 views
9

제가 아파치 2.2.26 실행 해요 :아파치의 모든 설정 쿠키 응답에 플래그를 안전 추가 Http 만은 httpd를

Server version: Apache/2.2.26 (Unix) 
Server built: Jan 17 2014 12:24:49 
Cpanel::Easy::Apache v3.22.30 rev9999 +cloudlinux 

내가 설정 - 쿠키 헤더를 편집 할 mod_headers를 사용하여 보안을 추가하려고 해요을 또는 httpOnly 플래그가 있지만 전혀 작동하지 않습니다 (아무것도하지 않고 HTTP 500 오류를 표시하지 않습니다).

머리글 명령의 "수정" "추가"지시문을 문제없이 편집 할 수 있습니다. 나는

내가 많은 조합을 시도했습니다 ... 이유는 모르겠지만, 이것은 내가 내 htaccess로에있는 것입니다 : 내가 자동으로 플래그를 추가합니다 모든 솔루션에 열려있어

Header edit Set-Cookie "(.)([Hh][Tt][Tt][Pp][Oo][Nn][Ll][Yy])?(.)" "$1$2 ;HTTPOnly" 
Header edit Set-Cookie "(.)([Ss][Ee][Cc][Uu][Rr][Ee])?(.)" "$1$2 ;Secure" 

응용 프로그램 내에서 코드를 편집 할 필요없이 모든 Set-Cookie 응답에 적용됩니다. 웹 서버에 추가 항목을 설치할 수있는 권한이 없지만 웹 서버에는 대부분의 웹 호스트에서 발견되는 Apache 모듈의 매우 긴 목록이 있습니다.

+0

* * 대답을 찾지 못했지만 그들이 무슨 말을하고 있는지 잘 모르겠습니다. http://apache-http-server.18135.x6.nabble.com/Mark-cookies-as -secure-td5003557.html PHP 파일이 쿠키를 생성하고 있습니다. 쿠키가 CGI로 구성 될 수 있습니다. 확실하지 않습니다. – Doug

+0

http://serverfault.com/questions/235713/apache-mod-header-rule-to-change-all-cookies-to-secure? –

+0

그걸 보았지만 아파치 2.2.3이 있었고 2.2.4에 수정이 추가되었습니다. 아파치 2.2.26을 실행 중입니다 ... 편집을위한 방법이 없으면 거기에있을 것이라고 생각합니다. 아파치의 구버전이 아닌 오래된 버전의 mod_header를 사용하고 있을까? 나는 그것에 찌르 게 될 것이다. – Doug

답변

20

Header edit 지시어는 응용 프로그램에서 편집 할 헤더를 생산하는 경우 귀하의 응용 프로그램이 응답을 생산 전에 가, 해당 헤더 아직 지시어가 실행되는 시간에 존재하지 않으며, 아무 것도 없을 것입니다 실행 그것을 편집하십시오.

대신 ( 응용 프로그램이 응답을 생성합니다 후 실행되는) Header always edit를 사용하여이 문제를 해결할 수 있습니다

Header always edit Set-Cookie (.*) "$1; HTTPOnly" 

예 헤더를,이 지침 적용하기 전에 :

Set-Cookie: foo=bar; domain=.example.com; path=/ 

동일 지침 적용 후 헤더 :

Set-Cookie: foo=bar; domain=.example.com; path=/; HTTPOnly 

질문에있는 지시어가 정확히 무엇을 의미하는지 확신 할 수 없습니다. 무엇 실제로Header always edit (위 예에서와 동일한 Set-Cookie 헤더로 가정)로 변경되면

Set-Cookie: f ;HTTPOnlyo=bar; domain=.example.com; path=/ 

당신이 정규 표현식에와 역 참조 작업, 거기 일어나고 있지만, 아마도 당신이 원하는 게 아니에요 무슨 분명 방법을 이해하면

. 이 답변의 맨 위에 나와있는 지시문은 모든 Set-Cookie 헤더에 플래그를 추가하려는 경우 작동해야합니다. 니가 필요로하는 것이 더 복잡하고 내가 그 검색을 통해 무엇을하려하는지 잘못 이해했다면/알려줘.

편집 :

Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure" 

... 또는 두 개의 지시문을 사용합니다 : 당신이 그렇게 같은 지침을 수정하실 수 있습니다, 모두 플래그를 추가 :

을 경우
하지 분명하다
Header always edit Set-Cookie (.*) "$1; HTTPOnly" 
Header always edit Set-Cookie (.*) "$1; Secure" 

첫 번째 접근 방식은 나에게 더 현명한 것처럼 보일 수 있지만 대부분 맛의 문제입니다.

+0

감사합니다! 나는 이것을 시험해보고 작동하도록했습니다. 나는 그것이 단순해야만한다는 것을 알았다! BTW, 내가 두 줄을 가지고있는 이유는 플래그가 이미 더 복잡한 RegEx없이 존재했다면 httpOnly를 추가하거나 보안을 피하는 것이 었습니다. 어쨌든, 나는 그러한 조정을 할 수 있습니다. – Doug