Programing

PHP에서 HttpOnly 쿠키 사용을 어떻게 설정합니까?

lottogame 2020. 9. 6. 11:52
반응형

PHP에서 HttpOnly 쿠키 사용을 어떻게 설정합니까?


PHP appsas 에서 쿠키를 어떻게 설정할 수 HttpOnly cookies있습니까?


  • 들어 쿠키 ,이 대답을 참조하십시오.
  • 위해 PHP 자신의 세션 쿠키 ( PHPSESSID기본적으로) 볼 리치의 대답 @

setcookie()setrawcookie()기능, 도입 httponly하기 쉬운이 좋은을 다시 PHP 5.2.0의 어두운 시대에, 매개 변수를. 구문에 따라 7 번째 매개 변수를 true로 설정하기 만하면됩니다.

간결성을 위해 단순화 된 함수 구문

setcookie(    $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )

NULL기본값으로 유지하려는 매개 변수를 입력하십시오 . secure매개 변수를 설정해야하는지 고려할 수도 있습니다 .

이전의 하위 수준 header()기능을 사용하는 것도 가능 합니다.

header( "Set-Cookie: name=value; httpOnly" );

Apache의 PHP 자체 세션 쿠키의 경우 :
이를 Apache 구성에 추가하거나.htaccess

<IfModule php5_module>
    php_flag session.cookie_httponly on
</IfModule>

이전에 호출 된 경우 스크립트 내에서도 설정할 수 있습니다 session_start().

ini_set( 'session.cookie_httponly', 1 );

HttpOnly는 교차 사이트 스크립팅을 중지하지 않습니다. 대신 가능한 공격 하나를 무력화하고 현재는 IE에서만 수행합니다 (FireFox는 XmlHttpRequest에서 HttpOnly 쿠키를 노출하고 Safari는이를 전혀 존중하지 않습니다). 반드시 HttpOnly를 켜십시오. 단 한 시간의 출력 필터링과 퍼즈 테스트도 중단하지 마십시오.


PHP 세션 쿠키는 httponly기본적으로 사용되지 않습니다 .

하기 위해서:

$sess_name = session_name();
if (session_start()) {
    setcookie($sess_name, session_id(), null, '/', null, null, true);
}

여기에 몇 가지주의 사항이 있습니다.

  • 당신은 session_name()전에 전화 해야session_start()
  • 이것은 또한 기본 경로를 '/'로 설정하는데, 이는 Opera에 필요하지만 PHP 세션 쿠키는 기본적으로 수행하지 않습니다.

<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 

?>

출처


Ilia의 설명 ... 5.2

PHP 5.2에서 httpOnly 쿠키 플래그 지원

해당 기사에서 언급했듯이 이전 버전의 PHP에서 헤더를 직접 설정할 수 있습니다.

header("Set-Cookie: hidden=value; httpOnly");

쿠키 설정 기능에서 지정할 수 있습니다 . PHP 설명서를 참조하십시오.

setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);

헤더 파일에서 사용할 수 있습니다.

// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);

이렇게하면 향후 모든 세션 쿠키가 httponly를 사용합니다.

  • 업데이트되었습니다.

php_flag 명령의 올바른 구문은 다음과 같습니다.

php_flag  session.cookie_httponly On

그리고 서버의 첫 번째 답변 만 쿠키를 설정하고 여기 (예 : "HttpOnly"지시문을 볼 수 있습니다. 따라서 테스트를 위해 모든 테스트 요청 후 브라우저에서 쿠키를 삭제하십시오.

참고 URL : https://stackoverflow.com/questions/36877/how-do-you-set-up-use-httponly-cookies-in-php

반응형