كيف تقوم بإعداد استخدام ملفات تعريف الارتباط HttpOnly في PHP

StackOverflow https://stackoverflow.com/questions/36877

سؤال

كيف يمكنني تعيين ملفات تعريف الارتباط في بلدي PHP apps كما HttpOnly cookies?

هل كانت مفيدة؟

المحلول

  • بالنسبة ملفات تعريف الارتباط الخاصة بك, انظر هذا الجواب.
  • بالنسبة PHP الخاصة الكوكيز (PHPSESSID, افتراضيا) ، @ريتشي الجواب

على setcookie() و setrawcookie() وظائف, عرض httponly المعلمة مرة أخرى في العصور المظلمة من PHP 5.2.0 ، مما يجعل هذه لطيفة وسهلة.ببساطة تعيين 7 المعلمة إلى true كما في الجملة

بناء الدالة المبسطة الإيجاز

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 الخاصة ملفات تعريف الارتباط على اباتشي:
إضافة إلى هذا اباتشي التكوين أو .htaccess

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

هذا يمكن أن يكون أيضا ضمن السيناريو ، طالما أنه يسمى قبل session_start().

ini_set( 'session.cookie_httponly', 1 );

تكون على علم بأن HttpOnly لا تتوقف البرمجة عبر الموقع;بل يحيد ممكن واحد هجوم و حاليا يعمل فقط على IE (فايرفوكس يعرض ملفات تعريف الارتباط HttpOnly في مدعوم "سفاري" لا شرف في كل شيء).بكل الوسائل ، بدوره HttpOnly ولكن لا تسقط حتى ساعة من ناتج تصفية زغب اختبار في التجارة لذلك.

علما بأن دورة PHP ملفات تعريف الارتباط لا تستخدم httponly بشكل افتراضي.

للقيام بذلك:

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

اثنين من العناصر من ملاحظة هنا:

  • عليك الاتصال session_name() قبل session_start()
  • هذا أيضا مجموعات المسار الافتراضي إلى '/' ، ضروري الأوبرا ولكن الذي PHP ملفات تعريف الارتباط لا تفعل بشكل افتراضي إما.
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE); 

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

?>

المصدر

التفسير هنا من إيليا...5.2 فقط على الرغم من

httpOnly كوكي العلم في دعم PHP 5.2

كما جاء في هذه المادة ، يمكنك تعيين رأس نفسك في الإصدارات السابقة من 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_flag الأمر

php_flag  session.cookie_httponly On

و أن تكون على علم, فقط أول رد من الملقم تعيين ملف تعريف الارتباط و هنا (على سبيل المثال يمكنك أن ترى "HttpOnly" التوجيه.لذا لاختبار حذف ملفات تعريف الارتباط من المتصفح بعد كل اختبار الطلب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top