Come posso impostare i cookie nel mio PHP apps
as HttpOnly cookies
?
$cookie->setHttpOnly(true);
con github.com/delight-im/PHP-Cookie
Come posso impostare i cookie nel mio PHP apps
as HttpOnly cookies
?
$cookie->setHttpOnly(true);
con github.com/delight-im/PHP-Cookie
Risposte:
PHPSESSID
, per impostazione predefinita), vedere la risposta di @ richieLe funzioni setcookie()
e setrawcookie()
, che hanno introdotto il httponly
parametro, nei secoli bui di PHP 5.2.0, rendendolo piacevole e facile. È sufficiente impostare il settimo parametro su true, secondo la sintassi
Sintassi della funzione semplificata per brevità
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
Immettere NULL
per i parametri che si desidera mantenere come predefiniti. Potresti anche considerare se dovresti impostare il secure
parametro.
È anche possibile utilizzare la vecchia header()
funzione di livello inferiore :
header( "Set-Cookie: name=value; httpOnly" );
set_cookie
chiamata meno prolissa se non avremo bisogno di impostare gli altri parametri. Ad esempio set_cookie($name, $value, httponly: true)
.
Per i cookie di sessione di PHP su Apache:
aggiungilo alla tua configurazione di Apache o.htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
Questo può anche essere impostato all'interno di uno script, purché venga chiamato prima session_start()
.
ini_set( 'session.cookie_httponly', 1 );
php.ini
.
php_value
a php_flag
non funziona. L'ho appena provato sul mio server ..
php_flag
, è necessario modificare anche il valore - in on
o off
- vedere il manuale.
Tieni presente che i cookie di sessione PHP non vengono utilizzati httponly
per impostazione predefinita.
Fare quello:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
Un paio di elementi degni di nota qui:
session_name()
primasession_start()
Tieni presente che HttpOnly non interrompe lo scripting tra siti; invece, neutralizza un possibile attacco e attualmente lo fa solo su IE (FireFox espone i cookie HttpOnly in XmlHttpRequest e Safari non lo onora affatto). Con tutti i mezzi, attiva HttpOnly, ma non perdere nemmeno un'ora di filtraggio dell'output e test fuzz in cambio di esso.
Spiegazione qui da Ilia ... 5.2 solo però
httpOnly supporto per flag cookie in PHP 5.2
Come affermato in quell'articolo, puoi impostare tu stesso l'intestazione nelle versioni precedenti di PHP
header("Set-Cookie: hidden=value; httpOnly");
Puoi specificarlo nella funzione set cookie vedi il manuale php
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
Puoi usarlo in un file di intestazione.
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
In questo modo tutti i cookie di sessione futuri utilizzeranno solo http.
Una soluzione più elegante poiché PHP> = 7.0
session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]);