Domanda

Come posso impostare i cookie nel mio file PHP apps COME HttpOnly cookies?

È stato utile?

Soluzione

  • Per i tuoi biscotti, vedi questa risposta.
  • Per Cookie di sessione di PHP (PHPSESSID, per impostazione predefinita), vedere La risposta di @richie

IL setcookie() E setrawcookie() funzioni, ha introdotto il httponly parametro, nei tempi bui di PHP 5.2.0, rendendolo semplice e piacevole.Imposta semplicemente il settimo parametro su true, come da sintassi

Sintassi della funzione semplificata per brevità

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

accedere NULL per i parametri che si desidera mantenere come predefiniti.Potresti anche considerare se dovresti impostare il file secure parametro.

È anche possibile utilizzare il livello più vecchio e inferiore header() funzione:

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

Altri suggerimenti

Per i cookie di sessione di PHP su Apache:
aggiungilo alla tua configurazione 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 );

Tieni presente che HttpOnly non interrompe lo scripting cross-site;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).Sicuramente, attiva HttpOnly, ma non rinunciare nemmeno a un'ora di filtraggio dell'output e test fuzz in cambio di questo.

Tieni presente che i cookie di sessione PHP non utilizzano 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:

  • Devi chiamare session_name()Prima session_start()
  • Ciò imposta anche il percorso predefinito su '/', che è necessario per l'opera ma che i cookie di sessione PHP non fanno neanche per impostazione predefinita.
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

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

?>

Fonte

Spiegazione qui da Ilia...Solo 5.2 però

Supporto del flag cookie httpOnly 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 imposta cookie vedere 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.

  • Aggiornato.

La sintassi corretta del comando php_flag è

php_flag  session.cookie_httponly On

E attenzione, basta prima rispondere dal server impostare il cookie e qui (ad esempio puoi vedere la direttiva "HttpOnly".Quindi, per testare, elimina i cookie dal browser dopo ogni richiesta di test.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top