Como posso definir os cookies no meu PHP apps
AS HttpOnly cookies
?
$cookie->setHttpOnly(true);
com github.com/delight-im/PHP-Cookie
Como posso definir os cookies no meu PHP apps
AS HttpOnly cookies
?
$cookie->setHttpOnly(true);
com github.com/delight-im/PHP-Cookie
Respostas:
PHPSESSID
por padrão), veja a resposta de @ richieO setcookie()
e setrawcookie()
funções, introduziu o httponly
parâmetro, de volta na idade das trevas do PHP 5.2.0, tornando este agradável e fácil. Basta definir o sétimo parâmetro como verdadeiro, de acordo com a sintaxe
Sintaxe da função simplificada para brevidade
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
Insira os NULL
parâmetros que deseja manter como padrão. Você também pode querer considerar se deve definir o secure
parâmetro.
Também é possível usar a função mais antiga de nível inferior header()
:
header( "Set-Cookie: name=value; httpOnly" );
Para cookies de sessão do próprio PHP no Apache:
adicione isso à sua configuração do Apache ou.htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
Isso também pode ser definido em um script, desde que seja chamado antes session_start()
.
ini_set( 'session.cookie_httponly', 1 );
php.ini
.
php_value
para php_flag
não funciona. Acabei de experimentar no meu servidor ..
php_flag
, você também deve alterar o valor - para on
ou off
- consulte o manual.
Observe que os cookies de sessão PHP não são usados httponly
por padrão.
Fazer isso:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
Alguns itens importantes aqui:
session_name()
antessession_start()
Esteja ciente de que o HttpOnly não interrompe o script entre sites; em vez disso, ele neutraliza um possível ataque e, atualmente, faz isso apenas no IE (o FireFox expõe cookies HttpOnly em XmlHttpRequest, e o Safari não o honra de forma alguma). Certamente, ative o HttpOnly, mas não perca nem uma hora de filtragem de saída e teste de difusão para trocá-lo.
Explicação aqui de Ilia ... embora apenas 5,2
Suporte para sinalizador de cookie httpOnly no PHP 5.2
Conforme declarado naquele artigo, você mesmo pode definir o cabeçalho nas versões anteriores do PHP
header("Set-Cookie: hidden=value; httpOnly");
Você pode especificá-lo na função definir cookie, consulte o manual do php
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
Você pode usar isso em um arquivo de cabeçalho.
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
Dessa forma, todos os cookies de sessão futura usarão httponly.
A sintaxe certa do comando php_flag é
php_flag session.cookie_httponly On
E esteja ciente, basta primeiro responder do servidor definir o cookie e aqui (por exemplo, você pode ver a diretiva "HttpOnly". Portanto, para testar, exclua os cookies do navegador após cada solicitação de teste.
Uma solução mais elegante desde PHP> = 7.0
session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]);