PHP Academy · Pelajaran

Keselamatan Kuki: Bendera HttpOnly dan Secure

Lindungi kuki dengan atribut HttpOnly, Secure dan SameSite.

Pelajaran 4 daripada 413 langkah

Keselamatan Kuki: Bendera HttpOnly dan Secure ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Bendera HttpOnly

Apabila kuki mempunyai bendera HttpOnly, JavaScript tidak boleh mengaksesnya melalui document.cookie, sekali gus menghalang pencurian sesi berasaskan XSS.

Menetapkan HttpOnly dan Secure

Gunakan bentuk tatasusunan pilihan (PHP 7.3+) untuk kod yang kemas dan mudah dibaca.

<?php
setcookie("session_id", $id, [
    "expires"  => time() + 3600,
    "path"     => "/",
    "secure"   => true,
    "httponly" => true,
    "samesite" => "Strict",
]);

Bendera Secure

Kuki Secure hanya dihantar melalui HTTPS. Pada sambungan HTTP, pelayar tidak menyertakannya, sekali gus menghalang pemintasan melalui HTTP biasa.

Atribut SameSite

SameSite mengawal masa kuki dihantar bersama permintaan merentas tapak:

  • Strict — hanya permintaan daripada tapak yang sama
  • Lax — tapak yang sama + navigasi peringkat atas
  • None — merentas tapak (memerlukan Secure)

SameSite dan CSRF

Menetapkan SameSite kepada mod ketat atau longgar mengurangkan risiko CSRF kerana kuki sesi tidak dihantar bersama permintaan POST merentas tapak yang dipalsukan.

Tetapan Kuki Sesi php.ini

Konfigurasikan keselamatan kuki sesi lalai semasa masa jalan:

<?php
ini_set("session.cookie_httponly", "1");
ini_set("session.cookie_secure",   "1");
ini_set("session.cookie_samesite", "Lax");
session_start();

Awalan Kuki

Pelayar mematuhi awalan nama kuki:

  • __Secure- — kuki mesti mempunyai bendera Secure
  • __Host- — mesti mempunyai Secure, Path=/ dan tiada atribut Domain

Contoh Awalan Kuki

Gunakan awalan __Host- untuk mengikat kuki kepada hos yang tepat.

<?php
setcookie("__Host-session", $token, [
    "secure"   => true,
    "httponly" => true,
    "samesite" => "Strict",
    "path"     => "/",
]);

Menyemak Bendera dalam DevTools

Dalam DevTools pelayar → Aplikasi → Kuki, sahkan: HttpOnly ditanda, Secure ditanda dan SameSite menunjukkan Strict atau Lax.

Tanpa HttpOnly

Skrip berniat jahat yang disuntik melalui XSS boleh menjalankan document.cookie, membaca ID sesi dan menghantarnya kepada penyerang — lalu mengambil alih akaun.

Tanpa Secure

Pada tapak HTTP/HTTPS bercampur, kuki sesi dihantar dalam teks biasa melalui HTTP. Penyadap rangkaian boleh mencurinya.

Ringkasan

Sentiasa tetapkan HttpOnly dan Secure pada kuki sesi serta pengesahan. Tambahkan SameSite=Strict atau Lax. Gunakan bentuk tatasusunan pilihan bagi setcookie().

Semakan Pantas

Bendera manakah yang menghalang JavaScript daripada membaca kuki?

Percuma untuk bermula

Pelajari PHP dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
49
Pelajaran
195

Soalan Lazim

Adakah pelajaran “Keselamatan Kuki: Bendera HttpOnly dan Secure” percuma?

Ya — teks penuh “Keselamatan Kuki: Bendera HttpOnly dan Secure” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Keselamatan Kuki: Bendera HttpOnly dan Secure”?

Lindungi kuki dengan atribut HttpOnly, Secure dan SameSite. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Keselamatan Kuki: Bendera HttpOnly dan Secure” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Memulakan dan Menggunakan Sesi
  2. Amalan Terbaik Keselamatan Sesi
  3. Menetapkan dan Membaca Kuki
  4. Keselamatan Kuki: Bendera HttpOnly dan Secure
← Kembali ke PHP Academy