@Tchalvak Não, as respostas atuais ainda são oficiais. Nada mudou desde 2008 em relação à configuração de cookies somente HTTP no PHP. Quais navegadores suportam cookies somente HTTP é uma pergunta diferente, com uma resposta diferente.
Para o cookie de sessão do próprio PHP ( PHPSESSIDpor padrão), veja a resposta de @ richie
O setcookie()e setrawcookie()funções, introduziu o httponlyparâ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
+1, pois é uma coisa boa (para segurança) ter em vigor em todo o servidor, mas em vez disso adicionado ao php.ini.
Anthony Hatzopoulos
10
Observe que php_flag deve ser usado em seu lugar: "Não use php_value para definir valores booleanos. Php_flag deve ser usado em seu lugar." php.net/manual/en/configuration.changes.php
Ondrej Machulda
@OndrejMachulda A mudança php_valuepara php_flagnão funciona. Acabei de experimentar no meu servidor ..
Nate
6
@Nate: Ao alterar para php_flag, você também deve alterar o valor - para onou off- consulte o manual.
Ondrej Machulda
14
Observe que os cookies de sessão PHP não são usados httponlypor padrão.
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.
Apenas para sua informação, session.use_only_cookies está ativado por padrão no PHP> 5.3
Nic Cottrell
1
e correto é "todos os cookies de sessão futura " usarão httponly, não personalizados ...
qdev 01 de
2
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.
$cookie->setHttpOnly(true);
com github.com/delight-im/PHP-CookieRespostas:
PHPSESSID
por padrão), veja a resposta de @ richieO
setcookie()
esetrawcookie()
funções, introduziu ohttponly
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 sintaxeSintaxe da função simplificada para brevidade
Insira os
NULL
parâmetros que deseja manter como padrão. Você também pode querer considerar se deve definir osecure
parâmetro.Também é possível usar a função mais antiga de nível inferior
header()
:fonte
Para cookies de sessão do próprio PHP no Apache:
adicione isso à sua configuração do Apache ou
.htaccess
Isso também pode ser definido em um script, desde que seja chamado antes
session_start()
.fonte
php.ini
.php_value
paraphp_flag
não funciona. Acabei de experimentar no meu servidor ..php_flag
, você também deve alterar o valor - paraon
ouoff
- consulte o manual.Observe que os cookies de sessão PHP não são usados
httponly
por padrão.Fazer isso:
Alguns itens importantes aqui:
session_name()
antessession_start()
fonte
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.
fonte
Fonte
fonte
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
fonte
Você pode especificá-lo na função definir cookie, consulte o manual do php
fonte
Você pode usar isso em um arquivo de cabeçalho.
Dessa forma, todos os cookies de sessão futura usarão httponly.
fonte
A sintaxe certa do comando php_flag é
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.
fonte
Uma solução mais elegante desde PHP> = 7.0
session_start
opções de início de sessão
fonte