كيف تقوم بإعداد استخدام ملفات تعريف الارتباط HttpOnly في PHP
سؤال
كيف يمكنني تعيين ملفات تعريف الارتباط في بلدي 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" التوجيه.لذا لاختبار حذف ملفات تعريف الارتباط من المتصفح بعد كل اختبار الطلب.