Come posso impostare i cookie nel mio PHP appsas HttpOnly cookies?
$cookie->setHttpOnly(true);con github.com/delight-im/PHP-Cookie
Come posso impostare i cookie nel mio PHP appsas 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 httponlyparametro, 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 NULLper i parametri che si desidera mantenere come predefiniti. Potresti anche considerare se dovresti impostare il secureparametro.
È anche possibile utilizzare la vecchia header()funzione di livello inferiore :
header( "Set-Cookie: name=value; httpOnly" );
set_cookiechiamata 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_valuea php_flagnon funziona. L'ho appena provato sul mio server ..
php_flag, è necessario modificare anche il valore - in ono off- vedere il manuale.
Tieni presente che i cookie di sessione PHP non vengono utilizzati httponlyper 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]);