2008-08-31 4 views
78

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

+0

http://stackoverflow.com/questions/528405/which-browsers-do-support-httponly-cookies ब्राउज़र समर्थन जानकारी है। – Kzqai

+2

@Tchalvak नहीं, वर्तमान उत्तर अभी भी आधिकारिक हैं PHP में HTTP-only कुकी सेटिंग के संबंध में 2008 से कुछ भी नहीं बदला है। _ कौन सा ब्राउजर HTTP-only कुकीज का समर्थन करता है एक अलग है एक अलग जवाब के साथ सवाल। – lanzz

+0

आप '$ कुकी-> setHttpOnly (true) का उपयोग कर सकते हैं;' https://github.com/delight-im/PHP- कुकी – caw

उत्तर

75
  • अपने कुकीज़ के लिए में, इस सवाल का जवाब देखें।
  • पीएचपी के अपने सत्र कुकी (PHPSESSID, डिफ़ॉल्ट रूप से) के लिए, @richie's answer

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"); 
5

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

httpOnly cookie flag support in PHP 5.2

के रूप में है कि लेख में कहा गया है, तो आप PHP के

header("Set-Cookie: hidden=value; httpOnly"); 
4
<?php 
//None HttpOnly cookie: 
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

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

?> 

पिछले संस्करणों में शीर्ष लेख अपने आप को सेट कर सकते हैं Source

5

आप निर्दिष्ट कर सकते हैं यह सेट कुकी समारोह see the php manual

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

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

+12

के साथ यह स्थिति अब '08 के बाद से बदल सकती है। यहां एक और वर्तमान/अद्यतन सूची है: http://stackoverflow.com/questions/528405/which-browsers-do-support-httponly-cookies – Kzqai

+0

मैं वास्तव में अपना डाउनवोट हटाना चाहता हूं। –

9

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

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

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

टिप्पणी की वस्तुओं के एक जोड़े को यहाँ:

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

http://php.net/manual/en/function.session-set-cookie-params.php यह कस्टम कोडिंग के बजाय उपर्युक्त PHP फ़ंक्शन के माध्यम से स्वचालित रूप से किया जा सकता है। – Ryaner

87

अपाचे पर पीएचपी के अपने सत्र कुकीज़ के लिए:
अपने अपाचे विन्यास को यह जोड़ सकते हैं या .htaccess

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

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

ini_set('session.cookie_httponly', 1); 
+9

+1 क्योंकि यह आपके पूरे सर्वर पर एक अच्छी बात है (सुरक्षा के लिए) लेकिन इसके बजाय 'php.ini' में जोड़ा गया है। –

+8

कृपया ध्यान दें कि php_flag का उपयोग इसके बजाय किया जाना चाहिए: "बूलियन मान सेट करने के लिए php_value का उपयोग न करें। Php_flag का उपयोग इसके बजाय किया जाना चाहिए।" http://php.net/manual/en/configuration.changes.php –

+0

@OndrejMachulda 'php_value' को 'php_flag' में बदलना काम नहीं करता है। मैंने बस इसे अपने सर्वर पर आज़माया .. – Nate

3

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

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

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

+0

बस FYI session.use_only_cookies डिफ़ॉल्ट रूप से PHP> 5.3 –

+0

में चालू है और सही है "सभी भविष्य ** सत्र ** कुकीज़" httponly का उपयोग करेंगे, कस्टम वाले नहीं ... – qdev

1

php_flag आदेश की सही वाक्य रचना

php_flag session.cookie_httponly On 
सर्वर सेट कुकी से

और हो बारे में पता है, बस पहले उत्तर और यहाँ है (आप "केवल Http" निर्देश देख सकते हैं, उदाहरण के लिए। तो के लिए परीक्षण कुकी हटाने के प्रत्येक परीक्षण अनुरोध के बाद ब्राउज़र से।

संबंधित मुद्दे