亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
header JWT
Rentetan kedua ialah muatan JWT. Ia juga merupakan rentetan JSON yang dikodkan URL BASE64. Ia mengandungi beberapa bidang standard yang dipanggil "pengisytiharan". Terdapat tiga jenis pengisytiharan:
tandatangan JWT adalah mekanisme penyulitan yang direka untuk melindungi data JWT menggunakan tandatangan digital yang unik kepada kandungan token. Tandatangan memastikan integriti JWT supaya pengguna dapat mengesahkan bahawa ia tidak diganggu oleh pelakon yang berniat jahat.
Apabila anda mengklik butang Get Current TimeStamp, permintaan GET dikeluarkan kepada Resource.php, yang menetapkan JWT yang anda terima selepas pengesahan dalam tajuk kebenaran.
Akhirnya, mari kita lihat bagaimana untuk mengesahkan token dalam PHP. Seperti biasa, kami akan memasukkan autoloader komposer. Kami kemudian boleh memilih untuk memeriksa sama ada kaedah permintaan yang betul digunakan. Untuk terus memberi tumpuan kepada kod khusus JWT, saya telah melangkau kod yang melakukan ini:
Bolehkah kita menggunakan JWT dalam PHP?
Apakah Pengesahan JWT dalam PHP?
Apakah alternatif kepada JWT dalam PHP?
Bagaimana untuk melindungi API PHP menggunakan JWT?
Rumah pembangunan bahagian belakang tutorial php Kebenaran PHP dengan JWT (JSON Web Tokens)

Kebenaran PHP dengan JWT (JSON Web Tokens)

Feb 08, 2025 am 09:57 AM

PHP Authorization with JWT (JSON Web Tokens)

Pengesahan aplikasi yang digunakan untuk bergantung semata -mata pada kelayakan seperti nama pengguna/peti mel dan kata laluan, dan sesi itu digunakan untuk mengekalkan status pengguna sehingga pengguna log keluar. Selepas itu, kami mula menggunakan API Pengesahan. Baru -baru ini, Token Web JSON (JWT) semakin digunakan untuk mengesahkan permintaan pelayan.

Artikel ini akan memperkenalkan JWT dan cara menggunakan PHP untuk pengesahan permintaan pengguna berasaskan JWT.

mata utama

Evolusi kaedah pengesahan:
    artikel ini menggariskan evolusi kaedah pengesahan pengguna, dari sesi tradisional untuk menggunakan token web JSON (JWT), menonjolkan penggunaan transformasi aplikasi web yang selamat dan cekap dalam bagaimana pengesahan pengguna dan pengurusan sesi dilakukan.
  1. Kelebihan dan aplikasi JWT:
  2. Artikel ini menerangkan kelebihan JWT atas kaedah pengesahan lain, seperti keupayaan untuk menyimpan maklumat dan metadata, keserasian dengan OAuth2, dan penyediaan kawalan yang telah tamat tempoh, dan menggambarkan Bagaimana JWT meningkatkan keselamatan dan fleksibiliti proses pengesahan pengguna.
  3. Aplikasi Praktikal dalam PHP:
  4. Artikel ini menyediakan panduan komprehensif untuk melaksanakan JWT dalam aplikasi berasaskan PHP, meliputi generasi, penggunaan dan pengesahan JWT. Ini termasuk contoh dan penjelasan kod terperinci, menyediakan pembaca dengan pelan tindakan yang jelas untuk mengintegrasikan pengesahan berasaskan JWT dalam projek web mereka sendiri.
  5. jwt dan sesi

Pertama sekali, mengapa perbualan tidak begitu baik? Terdapat tiga sebab utama:

Data disimpan pada pelayan dalam teks biasa. Walaupun data tidak biasanya disimpan dalam folder awam, sesiapa yang mempunyai akses pelayan yang mencukupi dapat membaca kandungan fail sesi.

    Mereka melibatkan permintaan sistem fail/tulis. Setiap kali sesi bermula atau datanya diubahsuai, pelayan perlu mengemas kini fail sesi. Begitu juga setiap kali aplikasi menghantar cookie sesi. Jika bilangan pengguna besar, ia mungkin akan menyebabkan pelayan melambatkan kecuali anda menggunakan pilihan storan sesi alternatif seperti Memcached dan Redis.
  • Aplikasi yang diedarkan/dikelompokkan. Oleh kerana fail sesi disimpan pada sistem fail secara lalai, sukar untuk membina infrastruktur yang diedarkan atau dikelompokkan untuk aplikasi yang sangat tersedia (yang memerlukan teknologi seperti pengimbang beban dan pelayan berkumpul). Media penyimpanan lain dan konfigurasi khas mesti dilaksanakan, dan makna mereka mesti difahami sepenuhnya.
  • jwt

Sekarang, mari mula belajar JWT. Spesifikasi Token Web JSON (RFC 7519) pertama kali dikeluarkan pada 28 Disember 2010, dan kemas kini paling terkini pada Mei 2015.

JWT mempunyai banyak kelebihan atas kekunci API, termasuk:

  • kekunci API adalah rentetan rawak, manakala JWTS mengandungi maklumat dan metadata. Maklumat dan metadata ini boleh menggambarkan pelbagai kandungan, seperti identiti pengguna, data kebenaran, dan kesahihan token dalam julat masa atau relatif kepada domain.
  • JWT tidak memerlukan agensi terbitan berpusat atau pembatalan.
  • JWT serasi dengan OAuth2.
  • data JWT boleh diperiksa.
  • JWT telah tamat tempoh.
  • JWT sesuai untuk persekitaran yang terkawal ruang, seperti tajuk kebenaran HTTP.
  • Data dipindahkan dalam format Notasi Objek JavaScript (JSON).
  • JWT diwakili menggunakan pengekodan base64url.

Apa yang kelihatan seperti JWT?

ini adalah contoh JWT:

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>

Pada pandangan pertama, rentetan ini nampaknya hanya sekumpulan aksara rawak yang berkaitan dengan tempoh atau watak -watak DOT. Jadi nampaknya tidak berbeza dengan kunci API. Walau bagaimanapun, jika anda melihat dengan teliti, anda akan melihat bahawa terdapat tiga rentetan berasingan.

header JWT

Rentetan pertama adalah tajuk JWT. Ia adalah rentetan JSON yang dikodkan URL BASE64. Ia menentukan algoritma penyulitan yang digunakan untuk menghasilkan tandatangan dan jenis token, yang sentiasa ditetapkan kepada JWT. Algoritma boleh simetri atau asimetri .

Algoritma simetri menggunakan kunci tunggal untuk membuat dan mengesahkan token. Kunci ini dikongsi antara pencipta dan pengguna JWT. Pastikan anda hanya memastikan pencipta dan pengguna mengetahui kunci. Jika tidak, sesiapa sahaja boleh membuat token yang sah. Algoritma asimetrik menggunakan kunci peribadi untuk menandatangani token dan menggunakan kunci awam untuk mengesahkan token. Algoritma ini harus digunakan apabila kunci yang dikongsi tidak praktikal atau apabila pihak lain hanya perlu mengesahkan integriti token.

muatan JWT

Rentetan kedua ialah muatan JWT. Ia juga merupakan rentetan JSON yang dikodkan URL BASE64. Ia mengandungi beberapa bidang standard yang dipanggil "pengisytiharan". Terdapat tiga jenis pengisytiharan:

berdaftar

, awam dan private . Penyata pendaftaran dipratentukan. Anda boleh mencari senarai mereka di RFC JWT. Berikut adalah beberapa kenyataan yang biasa digunakan:

IAT: Tarikh dan Timestamp yang dikeluarkan oleh Token.
  • Kunci: Rentetan unik yang boleh digunakan untuk mengesahkan token, tetapi ini bertentangan dengan institusi penerbit tanpa berpusat.
  • iss: rentetan yang mengandungi nama atau pengenalpastian penerbit. Boleh menjadi nama domain yang boleh digunakan untuk membuang token dari aplikasi lain.
  • NBF: Token harus mula dianggap tarikh yang sah dan cap waktu. Hendaklah sama dengan atau lebih besar daripada IAT.
  • exp: Tarikh dan cap waktu yang token harus berhenti sah. Harus lebih besar daripada IAT dan NBF.
  • anda boleh menentukan pengisytiharan awam seperti yang diperlukan. Walau bagaimanapun, mereka tidak boleh sama dengan pernyataan berdaftar atau pernyataan awam yang sudah ada. Anda boleh membuat pernyataan peribadi yang anda suka. Mereka hanya untuk kedua -dua pihak: pengeluar dan pengguna.

tandatangan JWT

tandatangan JWT adalah mekanisme penyulitan yang direka untuk melindungi data JWT menggunakan tandatangan digital yang unik kepada kandungan token. Tandatangan memastikan integriti JWT supaya pengguna dapat mengesahkan bahawa ia tidak diganggu oleh pelakon yang berniat jahat.

tandatangan JWT adalah gabungan tiga perkara:

  • header JWT
  • muatan JWT
  • Nilai Rahsia

Ketiga -tiga ini ditandatangani secara digital menggunakan algoritma yang dinyatakan dalam tajuk JWT ( tidak disulitkan ). Jika kita menyahkod contoh di atas, kita akan mendapat rentetan JSON berikut:

header JWT

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>

data JWT

<code>{
    "alg": "HS256",
    "typ": "JWT"
}</code>

anda boleh mencuba jwt.io sendiri, di mana anda boleh mencuba pengekodan dan penyahkodan JWT anda sendiri.

Gunakan JWT dalam aplikasi berasaskan PHP

Sekarang anda telah mempelajari apa JWT, sudah tiba masanya untuk belajar cara menggunakannya dalam aplikasi PHP anda. Jangan ragu untuk mengklonkan kod artikel ini, atau ikuti langkah kami sebelum membincangkannya.

Anda boleh mengambil beberapa cara untuk mengintegrasikan JWT, tetapi inilah yang akan kami ambil.

Selain dari halaman log masuk dan logout, semua permintaan untuk permohonan perlu disahkan melalui JWT. Jika pengguna membuat permintaan tanpa JWT, mereka akan diarahkan ke halaman log masuk.

Selepas pengguna mengisi dan mengemukakan borang log masuk, borang akan dikemukakan melalui JavaScript ke endpoint endpoint login.php dalam permohonan kami. Titik akhir kemudian menarik kelayakan (nama pengguna dan kata laluan) dari permintaan dan cek bahawa mereka sah.

Jika sah, ia akan menjana JWT dan menghantarnya kembali kepada pelanggan. Apabila pelanggan menerima JWT, ia menyimpan JWT dan menggunakannya untuk setiap permintaan masa depan untuk permohonan itu.

Untuk senario mudah, pengguna hanya boleh meminta satu sumber - sumber fail php yang betul. Ia tidak berbuat banyak, ia hanya mengembalikan rentetan yang mengandungi cap waktu semasa pada masa permintaan.

Terdapat beberapa cara untuk menggunakan JWT semasa membuat permintaan. Dalam permohonan kami, JWT akan dihantar dalam tajuk kebenaran pembawa.

Jika anda tidak biasa dengan kebenaran pembawa, ia adalah satu bentuk pengesahan HTTP di mana token (seperti JWT) dihantar dalam tajuk permintaan. Pelayan boleh menyemak token dan menentukan sama ada akses "pemegang" ke token harus diberikan.

Ini adalah contoh tajuk:

<code>{
    "iat": 1416929109,
    "jti": "aa7f8d0a95c",
    "scopes": [
        "repo",
        "public_repo"
    ]
}</code>

Untuk setiap permintaan permohonan kami diterima, PHP akan cuba mengekstrak token dari tajuk pembawa. Jika ia wujud, ia disahkan. Jika sah, pengguna akan melihat tindak balas biasa terhadap permintaan tersebut. Walau bagaimanapun, jika JWT tidak sah, pengguna tidak dibenarkan mengakses sumber.

Sila ambil perhatian bahawa JWT tidak dimaksudkan untuk menggantikan kuki sesi.

Prasyarat

Pertama sekali, kita perlu memasang PHP dan komposer pada sistem kami.

Dalam direktori root projek, jalankan pemasangan komposer. Ini akan memperkenalkan Firebase PHP-JWT, perpustakaan pihak ketiga yang memudahkan operasi JWT, dan Laminas-Config untuk memudahkan akses kepada data konfigurasi dalam aplikasi.

borang log masuk

Gambar

Selepas memasang perpustakaan, marilah kita melengkapkan kod log masuk secara beransur -ansur dalam Authenticate.php. Kami mula -mula membuat persediaan biasa untuk memastikan bahawa autoloader yang dihasilkan oleh komposer tersedia.

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>

Selepas menerima penyerahan borang, kelayakan akan disahkan terhadap pangkalan data atau beberapa kedai data lain. Untuk tujuan contoh ini, kami akan menganggap mereka sah dan menetapkan $ hasvalidcredentials kepada benar.

<code>{
    "alg": "HS256",
    "typ": "JWT"
}</code>

Seterusnya, kami memulakan satu set pembolehubah untuk menjana JWT. Ingatlah bahawa sejak JWT boleh diperiksa pada pelanggan, jangan sertakan maklumat sensitif di dalamnya. Satu lagi perkara yang patut ditunjukkan ialah $ SecretKey tidak diasaskan seperti ini. Anda mungkin menetapkannya di persekitaran anda dan mengeluarkannya, menggunakan perpustakaan seperti phpDotenv, atau tetapkannya dalam fail konfigurasi. Dalam kes ini, saya mengelakkan melakukan ini kerana saya ingin memberi tumpuan kepada kod JWT.

Jangan bocor atau simpan di bawah kawalan versi!

Selepas menyediakan data muatan, kami menggunakan kaedah pengekodan statik PHP-JWT untuk membuat JWT.
<code>{
    "iat": 1416929109,
    "jti": "aa7f8d0a95c",
    "scopes": [
        "repo",
        "public_repo"
    ]
}</code>

Kaedah ini:

tukar array ke json
  • Menjana header
  • Tandatangan muatan
  • pengekodan rentetan akhir
  • Ia menerima tiga parameter:

Maklumat muatan
  • kekunci
  • algoritma untuk menandatangani token
  • kembali token yang dihasilkan dengan memanggil echo pada hasil fungsi:

menggunakan jwt
<code>Authorization: Bearer ab0dde18155a43ee83edba4a4542b973</code>

Gambar

Sekarang pelanggan mempunyai token, anda boleh menyimpannya menggunakan JavaScript atau mana -mana mekanisme yang anda suka. Berikut adalah contoh cara beroperasi menggunakan JavaScript asli. Dalam index.html, selepas borang itu berjaya diserahkan, JWT yang diterima akan disimpan dalam ingatan, borang log masuk akan tersembunyi, dan butang yang meminta cap waktu akan dipaparkan:

menggunakan jwt
<?php
declare(strict_types=1);

use Firebase\JWT\JWT;

require_once('../vendor/autoload.php');

Apabila anda mengklik butang Get Current TimeStamp, permintaan GET dikeluarkan kepada Resource.php, yang menetapkan JWT yang anda terima selepas pengesahan dalam tajuk kebenaran.

Apabila kita mengklik butang, permintaan yang serupa dengan yang berikut akan dikeluarkan:
<?php
// 從請求中提取憑據(jù)

if ($hasValidCredentials) {

Dengan mengandaikan bahawa JWT adalah sah, kita akan melihat sumber dan respons akan ditulis kepada konsol selepas itu.
$secretKey  = 'bGS6lzFqvvSQ8ALbOxatm7/Vk7mLQyzqaS34Q4oR1ew=';
$issuedAt   = new DateTimeImmutable();
$expire     = $issuedAt->modify('+6 minutes')->getTimestamp();      // 添加60秒
$serverName = "your.domain.name";
$username   = "username";                                           // 從過濾后的POST數(shù)據(jù)中檢索

$data = [
    'iat'  => $issuedAt->getTimestamp(),         // 頒發(fā)時間:生成令牌的時間
    'iss'  => $serverName,                       // 頒發(fā)者
    'nbf'  => $issuedAt->getTimestamp(),         // 不早于
    'exp'  => $expire,                           // 過期
    'userName' => $username,                     // 用戶名
];

Sahkan JWT

Akhirnya, mari kita lihat bagaimana untuk mengesahkan token dalam PHP. Seperti biasa, kami akan memasukkan autoloader komposer. Kami kemudian boleh memilih untuk memeriksa sama ada kaedah permintaan yang betul digunakan. Untuk terus memberi tumpuan kepada kod khusus JWT, saya telah melangkau kod yang melakukan ini:

Kod kemudian akan cuba mengekstrak token dari tajuk pembawa. Saya telah melakukan ini menggunakan preg_match. Jika anda tidak biasa dengan fungsi ini, ia akan melakukan padanan ekspresi biasa pada rentetan.
<?php     // 將數(shù)組編碼為JWT字符串。
    echo JWT::encode(
        $data,
        $secretKey,
        'HS512'
    );
}

Regex yang saya gunakan di sini akan cuba mengekstrak token dari pengepala pembawa dan membuang segala yang lain. Jika tidak dijumpai, permintaan ralat HTTP 400 dikembalikan:

Perhatikan bahawa secara lalai, Apache tidak lulus header HTTP_Authorization ke PHP. Alasan di sebalik itu ialah:
const store = {};
const loginButton = document.querySelector('#frmLogin');
const btnGetResource = document.querySelector('#btnGetResource');
const form = document.forms[0];

// 將jwt插入到store對象中
store.setJWT = function (data) {
  this.JWT = data;
};

loginButton.addEventListener('submit', async (e) => {
  e.preventDefault();

  const res = await fetch('/authenticate.php', {
    method: 'POST',
    headers: {
      'Content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
    },
    body: JSON.stringify({
      username: form.inputEmail.value,
      password: form.inputPassword.value
    })
  });

  if (res.status >= 200 && res.status < 300) {
    const jwt = await res.text();
    store.setJWT(jwt);
    frmLogin.style.display = 'none';
    btnGetResource.style.display = 'block';
  } else {
    // 處理錯誤
    console.log(res.status, res.statusText);
  }
});

Header Kebenaran Asas hanya selamat apabila sambungan anda selesai melalui HTTPS, kerana jika tidak, kelayakan akan dihantar melalui rangkaian dalam plaintext yang dikodkan (tidak disulitkan), yang merupakan isu keselamatan yang besar.

Saya memahami sepenuhnya logik keputusan ini. Walau bagaimanapun, untuk mengelakkan banyak kekeliruan, tambahkan yang berikut ke konfigurasi Apache anda. Kod itu akan berfungsi seperti yang diharapkan. Jika anda menggunakan nginx, kod itu harus berfungsi seperti yang diharapkan:

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>

Seterusnya, kami cuba mengekstrak JWT yang sepadan, yang akan menjadi elemen kedua pembolehubah $ perlawanan. Sekiranya tidak tersedia, tiada JWT diekstrak dan permintaan ralat HTTP 400 dikembalikan:

<code>{
    "alg": "HS256",
    "typ": "JWT"
}</code>

Jika kita mencapai titik ini, JWT telah diekstrak, jadi kita pergi ke fasa penyahkodan dan pengesahan. Untuk melakukan ini, kami memerlukan kunci kami sekali lagi, yang akan diekstrak dari konfigurasi persekitaran atau permohonan. Kemudian, kami menggunakan kaedah decode statik PHP-JWT untuk menyampaikannya ke JWT, kunci dan satu set algoritma yang digunakan untuk menyahkod JWT. Jika ia dapat berjaya dimulakan, kami akan cuba mengesahkannya. Contoh saya di sini adalah sangat mudah kerana ia hanya menggunakan penerbit, tidak lebih awal daripada, dan tamat tempoh tamat. Dalam aplikasi sebenar, anda juga boleh menggunakan banyak kenyataan lain.

Jika token tidak sah, seperti token telah tamat, pengguna akan menerima header HTTP 401 yang tidak dibenarkan dan skrip akan keluar.
<code>{
    "iat": 1416929109,
    "jti": "aa7f8d0a95c",
    "scopes": [
        "repo",
        "public_repo"
    ]
}</code>

Jika proses penyahkodan dan pengesahan gagal, mungkin:

Bilangan segmen yang disediakan tidak sepadan dengan tiga segmen standard yang diterangkan di atas.
  • Header atau muatan bukan rentetan JSON yang sah.
  • Tandatangan tidak sah, yang bermaksud data telah diganggu!
  • Pengisytiharan NBF ditetapkan dalam JWT, dan cap waktu lebih kecil daripada timestamp semasa.
  • Pengisytiharan IAT ditetapkan dalam JWT, dan cap waktu lebih kecil daripada cap waktu semasa.
  • Pengisytiharan Exp ditetapkan di JWT, yang cap waktu lebih besar daripada cap waktu semasa.
  • Seperti yang anda lihat, JWT mempunyai satu set kawalan yang bagus yang anda boleh menandakannya sebagai tidak sah tanpa membatalkan atau memeriksa secara manual terhadap senarai token yang sah.

Jika proses penyahkodan dan pengesahan berjaya, pengguna akan dibenarkan mengeluarkan permintaan dan akan menerima respons yang sepadan.

Ringkasan

Ini adalah pengenalan cepat kepada Token Web JSON (atau JWT) dan cara menggunakannya dalam aplikasi berasaskan PHP. Dari sini anda boleh cuba melaksanakan JWT dalam API seterusnya, mungkin cuba beberapa algoritma tandatangan lain yang menggunakan kekunci asimetrik seperti RS256, atau mengintegrasikannya ke dalam pelayan pengesahan OAuth2 yang sedia ada untuk digunakan sebagai kunci API.

Jika anda mempunyai sebarang komen atau soalan, sila hubungi kami melalui Twitter.

Soalan Lazim Menggunakan JWT untuk Kebenaran PHP

Bolehkah kita menggunakan JWT dalam PHP?

Anda sememangnya boleh menggunakan JWT dalam PHP untuk menubuhkan mekanisme pengesahan dan kebenaran dalam aplikasi web anda. Untuk memulakan, anda perlu menggunakan komposer untuk memasang perpustakaan PHP JWT, seperti "Firebase/PHP-JWT" atau "LCOBUCCI/JWT". Perpustakaan ini menyediakan alat yang diperlukan untuk membuat, pengekodan, penyahkodan, dan mengesahkan JWT. Untuk membuat JWT, anda boleh menggunakan perpustakaan untuk membina token yang mengandungi kenyataan seperti penerbit, penonton, masa tamat tempoh, dan banyak lagi. Setelah dibuat, anda boleh menandatangani token dengan kunci. Apabila menerima JWT, anda boleh menggunakan perpustakaan untuk menyahkod dan mengesahkannya untuk memastikan keasliannya. Jika token itu sah dan disahkan, anda boleh mengakses pengisytiharannya untuk menentukan identiti dan keizinan pengguna, yang membolehkan anda melaksanakan pengesahan dan kebenaran yang selamat dalam aplikasi PHP anda. Melindungi kunci anda dan mengikuti amalan terbaik keselamatan apabila menggunakan JWT adalah penting untuk mengelakkan akses yang tidak dibenarkan kepada sumber aplikasi.

Apakah Pengesahan JWT dalam PHP?

JWT (JSON Web Token) Pengesahan dalam PHP adalah kaedah yang digunakan secara meluas untuk melaksanakan pengesahan pengguna dan kebenaran dalam aplikasi web. Ia berdasarkan pengesahan token dan membolehkan pengesahan pengguna yang selamat dan tidak bertauliah. Inilah cara pengesahan JWT berfungsi dalam PHP: Pertama, semasa pengesahan pengguna atau log masuk, pelayan menjana JWT, token yang padat, yang mengandungi maklumat (tuntutan) yang berkaitan dengan pengguna, seperti ID pengguna, nama pengguna, dan peranan. Pengisytiharan ini biasanya data JSON. Pelayan kemudian menandatangani token ini dengan kunci untuk memastikan integriti dan keasliannya. Kedua, selepas pengesahan yang berjaya, pelayan menghantar JWT kembali kepada pelanggan, yang biasanya disimpan di lokasi yang selamat seperti kuki HTTP atau storan tempatan. Token ini berfungsi sebagai bukti pengesahan. Akhirnya, untuk permintaan berikutnya kepada sumber yang dilindungi di pelayan, klien menambahkan JWT ke tajuk permintaan, biasanya menggunakan tajuk "Kebenaran" dengan skim "Pembawa". Selepas menerima JWT, pelayan menggunakan kunci yang sama yang digunakan semasa penciptaan token untuk mengesahkan tandatangannya. Di samping itu, ia memeriksa sama ada token tidak tamat tempoh dan mengandungi perisytiharan yang sah. Selepas pengesahan yang berjaya, ia mengekstrak maklumat pengguna dari Perisytiharan Token dan melaksanakan Logik Kebenaran untuk memastikan pengguna mempunyai kebenaran yang diperlukan untuk mengakses sumber yang diminta. Pendekatan ini membolehkan pengesahan yang selamat dan tidak bertauliah dalam aplikasi PHP tanpa penyimpanan sesi pelayan. Walaupun pengesahan JWT di PHP memberikan banyak faedah seperti skalabilitas dan ketiadaan, amalan terbaik untuk melindungi kunci dan mengadopsi pengurusan token adalah penting untuk mengekalkan keselamatan permohonan anda. Menggunakan perpustakaan PHP JWT yang ditubuhkan dapat memudahkan pemprosesan token dan meningkatkan keselamatan.

Apakah alternatif kepada JWT dalam PHP?

Alternatif kepada JWT (JSON Web Tokens) untuk pengesahan dan kebenaran dalam PHP adalah pengesahan berasaskan sesi. Dalam pengesahan berasaskan sesi, pelayan mengekalkan satu sesi untuk setiap pengguna yang disahkan. Apabila pengguna log masuk, pengecam sesi unik dibuat (biasanya disimpan sebagai cookie sesi pada pelayar pelanggan). Pengenalpastian ini digunakan untuk mengaitkan pengguna dengan data sesi pelayan, termasuk maklumat yang berkaitan dengan pengguna, seperti ID pengguna, nama pengguna, dan keizinan. Pengesahan berasaskan sesi menyediakan kesederhanaan dan kemudahan pelaksanaan, menjadikannya sesuai untuk pelbagai aplikasi web, terutama jika anda tidak memerlukan keupayaan stateless dan berskala JWT. Ia secara semula jadi, yang boleh menjadi berfaedah apabila anda perlu menguruskan data khusus pengguna (seperti kandungan keranjang belanja atau keutamaan pengguna) semasa sesi pengguna. Walau bagaimanapun, terdapat beberapa perkara yang perlu dipertimbangkan semasa menggunakan pengesahan berasaskan sesi. Ia mungkin tidak boleh digunakan untuk arsitektur berasaskan diedarkan atau microservice yang memerlukan pengesahan tanpa stat. Di samping itu, menguruskan sesi pengguna boleh meningkatkan beban pelayan, terutamanya dalam aplikasi dengan pangkalan pengguna yang lebih besar. Akhirnya, memilih JWT dan pengesahan berasaskan sesi dalam PHP sepadan dengan keperluan khusus dan pertimbangan reka bentuk aplikasi untuk memastikan mekanisme pengesahan yang selamat dan berkesan memenuhi keperluan anda.

Bagaimana untuk melindungi API PHP menggunakan JWT?

Melindungi API PHP dengan JWT (Token Web JSON) melibatkan proses pelbagai langkah yang menggabungkan pengesahan dan kebenaran. Pertama, pilih perpustakaan PHP JWT yang sesuai (seperti "Firebase/PHP-JWT" atau "LCOBUCCI/JWT") untuk mengendalikan operasi yang berkaitan dengan token dan menggunakan komposer untuk menguruskan kebergantungan. Untuk pengesahan, anda perlu melaksanakan sistem pengesahan pengguna dalam aplikasi PHP anda. Sistem ini mengesahkan kelayakan pengguna terhadap pangkalan data atau penyedia pengesahan anda. Selepas pengesahan yang berjaya, anda akan menghasilkan token JWT yang mengandungi tuntutan yang berkaitan dengan pengguna seperti ID pengguna, nama pengguna, dan peranan. Pastikan untuk menetapkan masa tamat tempoh untuk mengawal kesahihan token dan kemudian tandatangan token dengan kunci. Token yang ditandatangani ini dihantar kembali kepada pelanggan sebagai sebahagian daripada tindak balas pengesahan. Pelanggan menyimpan JWT yang diterima dengan selamat, biasanya dalam kuki HTTP atau storan tempatan. Untuk permintaan API berikutnya, pelanggan akan memasukkan JWT dalam tajuk permintaan sebagai tajuk "Kebenaran" dengan skim "Pembawa". Dalam API PHP anda, anda boleh mengesahkan JWT yang masuk dengan mengesahkan tandatangannya menggunakan kunci yang sama yang digunakan semasa membuat token. Di samping itu, anda menyemak bahawa token tidak tamat tempoh dan mengandungi perisytiharan yang sah. Selepas pengesahan yang berjaya, anda mengekstrak maklumat pengguna dari Deklarasi Token dan melaksanakan Logik Kebenaran untuk memastikan pengguna mempunyai kebenaran yang diperlukan untuk mengakses sumber yang diminta. Menjaga aman utama adalah penting kerana ia adalah penting untuk menandatangani dan mengesahkan token. Mana -mana kebocoran kunci ini boleh membawa kepada kelemahan keselamatan yang serius.

Atas ialah kandungan terperinci Kebenaran PHP dengan JWT (JSON Web Tokens). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1488
72
Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Cara mengakses watak dalam rentetan dengan indeks dalam php Cara mengakses watak dalam rentetan dengan indeks dalam php Jul 12, 2025 am 03:15 AM

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

See all articles