मैं अपने PHP apps
रूप में कुकीज़ कैसे सेट कर सकता हूं HttpOnly cookies
?
$cookie->setHttpOnly(true);
के साथ github.com/delight-im/PHP-Cookie
मैं अपने PHP apps
रूप में कुकीज़ कैसे सेट कर सकता हूं HttpOnly cookies
?
$cookie->setHttpOnly(true);
के साथ github.com/delight-im/PHP-Cookie
जवाबों:
PHPSESSID
डिफ़ॉल्ट रूप से), देखना @ रिची के जवाबsetcookie()
और setrawcookie()
काम करता है, शुरू की httponly
पैरामीटर, पीएचपी 5.2.0 के अंधेरे उम्र में वापस आ गया, यह अच्छा और आसान बना रही है। सिंटैक्स के अनुसार, 7 वें पैरामीटर को सही पर सेट करें
संक्षिप्तता के लिए फ़ंक्शन सिंटैक्स सरलीकृत
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
NULL
उन मापदंडों के लिए दर्ज करें जिन्हें आप डिफ़ॉल्ट के रूप में रखना चाहते हैं। यदि आप secure
पैरामीटर सेट करना चाहिए, तो आप इस पर भी विचार कर सकते हैं ।
यह पुराने, निचले स्तर के header()
फ़ंक्शन का उपयोग करना भी संभव है:
header( "Set-Cookie: name=value; httpOnly" );
Apache पर PHP के अपने सत्र कुकीज़ के लिए:
इसे अपने Apache कॉन्फ़िगरेशन में जोड़ें या.htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
यह एक स्क्रिप्ट के भीतर भी सेट किया जा सकता है, जब तक कि इसे पहले कहा जाता है session_start()
।
ini_set( 'session.cookie_httponly', 1 );
php.ini
।
php_value
लिए बदल रहा है php_flag
। मैंने इसे अपने सर्वर पर आज़माया ..
php_flag
, तो आपको मान भी बदलना चाहिए - on
या तो या off
- मैनुअल देखें।
ध्यान दें कि PHP सत्र कुकीज़ httponly
डिफ़ॉल्ट रूप से उपयोग नहीं होती हैं ।
ऐसा करने के लिए:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
नोट के कुछ आइटम यहाँ:
session_name()
पहले फोन करना होगाsession_start()
ध्यान रखें कि HttpOnly क्रॉस-साइट स्क्रिप्टिंग बंद नहीं करता है; इसके बजाय, यह एक संभावित हमले को बेअसर करता है, और वर्तमान में केवल IE (FireFox XmlHttpRequest में HttpOnly कुकीज़ को उजागर करता है, और सफारी इसे बिल्कुल भी सम्मान नहीं करता है)। हर तरह से, HttpOnly को चालू करें, लेकिन इसके लिए व्यापार में आउटपुट फ़िल्टरिंग और फ़ज़ परीक्षण के एक घंटे भी नहीं छोड़ें।
इलिया से यहाँ स्पष्टीकरण ... 5.2 केवल यद्यपि
PHP 5.2 में httpOnly कुकी फ्लैग सपोर्ट
जैसा कि उस लेख में कहा गया है, आप अपने आप को PHP के पिछले संस्करणों में हेडर सेट कर सकते हैं
header("Set-Cookie: hidden=value; httpOnly");
आप इसे सेट कुकी फ़ंक्शन में निर्दिष्ट कर सकते हैं php मैनुअल देखें
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
आप इसका उपयोग हेडर फ़ाइल में कर सकते हैं।
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
इस तरह से भविष्य के सभी सत्र कुकीज़ httponly का उपयोग करेंगे।
PHP> = 7.0 के बाद से अधिक सुरुचिपूर्ण समाधान
session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]);