आप PHP में केवल कुकीज़ का उपयोग कैसे सेट अप करते हैं




security cookies (8)

मैं अपने PHP apps में HttpOnly cookies को HttpOnly cookies रूप में कैसे सेट कर सकता हूं?


आप इसे हेडर फ़ाइल में उपयोग कर सकते हैं।

// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);

इस तरह सभी भविष्य की कुकीज़ httponly का उपयोग करेंगे।


अपाचे पर PHP के स्वयं के सत्र कुकीज़ के लिए:
इसे अपने अपाचे कॉन्फ़िगरेशन या .htaccess

<IfModule php5_module>
    php_flag session.cookie_httponly on
</IfModule>

इसे एक स्क्रिप्ट के भीतर भी सेट किया जा सकता है, जब तक इसे session_start() से पहले कहा जाता है।

ini_set( 'session.cookie_httponly', 1 );

ध्यान दें कि PHP सत्र कुकीज़ डिफ़ॉल्ट रूप से httponly उपयोग नहीं करते हैं।

ऐसा करने के लिए:

$sess_name = session_name();
if (session_start()) {
    setcookie($sess_name, session_id(), null, '/', null, null, true);
}

यहां नोट के कुछ आइटम यहां दिए गए हैं:

  • session_name() से पहले आपको session_start() को कॉल session_name()
  • यह '/' के लिए डिफ़ॉल्ट पथ भी सेट करता है, जो ओपेरा के लिए जरूरी है लेकिन कौन सी PHP सत्र कुकीज़ डिफ़ॉल्ट रूप से नहीं करती है।

  • अपनी कुकीज़ के लिए , यह उत्तर देखें।
  • PHP की अपनी सत्र कुकी ( PHPSESSID , डिफ़ॉल्ट रूप से) के लिए, @ richie का उत्तर देखें

setrawcookie() setcookie() और setrawcookie() फ़ंक्शंस ने PHP 5.2.0 की अंधेरे उम्र में, httponly पैरामीटर पेश किया, यह अच्छा और आसान बना रहा। सिंटैक्स के अनुसार बस 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" );

<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

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

?>

स्रोत


ध्यान रखें कि Http केवल क्रॉस-साइट स्क्रिप्टिंग को नहीं रोकता है; इसके बजाय, यह एक संभावित हमले को बेअसर करता है, और वर्तमान में केवल आईई पर ही करता है (फ़ायरफ़ॉक्स एक्सएमएलएचटीपीआरक्वेट में केवल कुकीज़ को उजागर करता है, और सफारी इसे बिल्कुल सम्मान नहीं देता है)। हर तरह से, केवल चालू करें, लेकिन इसके लिए व्यापार में आउटपुट फ़िल्टरिंग और फ़ज़ परीक्षण का एक घंटा भी न छोड़ें।


इलिया से यहां स्पष्टीकरण ... 5.2 हालांकि यद्यपि

PHP 5.2 में केवल कुकी ध्वज समर्थन http

जैसा कि उस आलेख में बताया गया है, आप हेडर को स्वयं PHP के पिछले संस्करणों में सेट कर सकते हैं

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

आप इसे सेट कुकी फ़ंक्शन में निर्दिष्ट कर सकते हैं php मैन्युअल देखें

setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);




httponly