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

目次
まず、システムにPHPと作曲家をインストールする必要があります。
PHPのJWT認(rèn)証とは何ですか?
PHPのJWTの代替案は何ですか?
ホームページ バックエンド開発 PHPチュートリアル JWT(JSON Web Tokens)によるPHP認(rèn)証

JWT(JSON Web Tokens)によるPHP認(rèn)証

Feb 08, 2025 am 09:57 AM

PHP Authorization with JWT (JSON Web Tokens)

アプリケーション認(rèn)証は、ユーザー名/メールボックスやパスワードなどの資格情報(bào)のみに依存するために使用され、セッションはユーザーがログアウトするまでユーザーのステータスを維持するために使用されました。その後、認(rèn)証APIの使用を開始しました。最近、JSON Web Tokens(JWT)がサーバーリクエストの認(rèn)証にますます使用されています。

この記事では、JWTとは何か、JWTベースのユーザーリクエスト認(rèn)証にPHPを使用する方法を紹介します。

キーポイント

  1. 認(rèn)証方法の進(jìn)化:この記事では、従來のセッションからJSON Web Tokens(JWT)の使用まで、ユーザー認(rèn)証方法の進(jìn)化の概要を示しています。セッション管理が行われます。
  2. JWTの利點(diǎn)とアプリケーション:
  3. この記事では、情報(bào)やメタデータを保存する能力、OAUTH2との互換性、期限切れのコントロールの提供など、他の認(rèn)証方法よりもJWTの利點(diǎn)を説明し、説明します。 JWTがユーザー認(rèn)証プロセスのセキュリティと柔軟性を高める方法。 PHPの実用的なアプリケーション:この記事では、JWTの生成、使用、検証をカバーするPHPベースのアプリケーションにJWTを?qū)g裝するための包括的なガイドを提供します。これには、詳細(xì)なコードの例と説明が含まれ、読者にJWTベースの認(rèn)証を獨(dú)自のWebプロジェクトに統(tǒng)合するための明確なロードマップを提供します。
  4. jwtおよびセッション

まず第一に、なぜ會話がそれほど良くないのですか?主な理由は3つあります データは、単純なテキストでサーバーに保存されます。データが通常パブリックフォルダーに保存されていなくても、十分なサーバーアクセスを持つ人なら誰でもセッションファイルのコンテンツを読み取ることができます。

ファイルシステムの読み取り/書き込みリクエストが含まれます。セッションが開始されるか、そのデータが変更されるたびに、サーバーはセッションファイルを更新する必要があります。アプリがセッションクッキーを送信するたびに同じことが言えます。ユーザーの數(shù)が多い場合、MemcachedやRedisなどの代替セッションストレージオプションを使用しない限り、サーバーが遅くなる可能性があります。

    分散/クラスター化アプリケーション。セッションファイルはデフォルトでファイルシステムに保存されるため、利用可能な高度に利用可能なアプリケーション(ロードバランサーやクラスター化されたサーバーなどのテクノロジーが必要)のために、分散またはクラスター化されたインフラストラクチャを構(gòu)築することは困難です。他のストレージメディアと特別な構(gòu)成を?qū)g裝する必要があり、その意味を完全に理解する必要があります。
  • jwt
さあ、JWTの學(xué)習(xí)を始めましょう。 JSON Webトークン仕様(RFC 7519)は、2010年12月28日に初めてリリースされ、最新のアップデートは2015年5月でした。

JWTには、以下を含むAPIキーよりも多くの利點(diǎn)があります

  • APIキーはランダムな文字列であり、JWTには情報(bào)とメタデータが含まれています。この情報(bào)とメタデータは、ユーザーのID、承認(rèn)データ、およびドメインに対するトークンの有効性など、さまざまなコンテンツを説明する場合があります。
  • JWTは、集中的な発行または取り消し機(jī)関を必要としません。
  • JWTはOAUTH2と互換性があります。
  • JWTデータを確認(rèn)できます。
  • JWTは制御の有効期限が切れています。
  • JWTは、HTTP認(rèn)証ヘッダーなど、スペースが制約した環(huán)境に適しています。
  • データはJavaScriptオブジェクト表記(JSON)形式で転送されます。
  • JWTは、base64urlエンコードを使用して表されます。

jwtはどのように見えますか?

これはJWTの例です

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>
一見すると、この文字列は、ピリオドまたはドット文字に接続されたキャラクターのランダムなグループのようです。したがって、APIキーと違いはないようです。ただし、よく見ると、3つの文字列があることがわかります。

jwtヘッダー

最初の文字列はJWTヘッダーです。 Base64 URLエンコードJSON文字列です。これは、常にJWTに設(shè)定されている署名とトークンのタイプを生成するために使用される暗號化アルゴリズムを指定します。アルゴリズムは、または非対稱にすることができます。 対稱アルゴリズムは、単一のキーを使用してトークンを作成および検証します。このキーは、JWTの作成者と消費(fèi)者の間で共有されます。作成者と消費(fèi)者のみがキーを知っていることを確認(rèn)してください。それ以外の場合、誰でも有効なトークンを作成できます。

非対稱アルゴリズムは、秘密鍵を使用してトークンに署名し、公開キーを使用してトークンを確認(rèn)します。これらのアルゴリズムは、共有キーが非現(xiàn)実的である場合、または他の當(dāng)事者がトークンの完全性を検証するだけである場合に使用する必要があります。 JWTのペイロード

2番目の文字列はJWTのペイロードです。また、Base64 URLエンコードJSON文字列でもあります。 「宣言」と呼ばれるいくつかの標(biāo)準(zhǔn)フィールドが含まれています。宣言には3種類のタイプがあります:

登録

、

public

、private 登録明細(xì)書は事前に定義されています。 JWTのRFCでそれらのリストを見つけることができます。一般的に使用されるステートメントをいくつか紹介します:

IAT:トークンによって発行された日付とタイムスタンプ。

キー:トークンの検証に使用できる一意の文字列ですが、これは集中化されていない発行者機(jī)関に反します。
  • ISS:発行者の名前または識別子を含む文字列。他のアプリケーションからトークンを破棄するために使用できるドメイン名にすることができます。
  • NBF:トークンは有効な日付とタイムスタンプと見なされるようになります。 IAT以上である必要があります。
  • exp:トークンが有効に停止する日付とタイムスタンプ。 IATおよびNBFより大きくする必要があります。
  • 必要に応じて公開宣言を定義できます。ただし、登録された聲明や既に存在する公式聲明と同じではありません。好きなようにプライベートステートメントを作成できます。彼らは両方の當(dāng)事者のみです:生産者と消費(fèi)者。
  • jwtの署名

JWTの署名は、トークンのコンテンツに固有のデジタル署名を使用してJWTのデータを保護(hù)するように設(shè)計(jì)された暗號化メカニズムです。署名により、JWTの完全性が保証され、ユーザーが悪意のある俳優(yōu)によって改ざんされていないことを確認(rèn)できます。

JWTの署名は、3つのことの組み合わせです
  • jwtのヘッダー
  • JWTのペイロード
  • 秘密の値

これら3つは、JWTヘッダー(非暗號化されていない)で指定されたアルゴリズムを使用してデジタル署名されています。上記の例をデコードすると、次のJSON文字列が取得されます。

jwtのヘッダー

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>
JWTのデータ

<code>{
    "alg": "HS256",
    "typ": "JWT"
}</code>
自分でjwt.io自分で試すことができます。ここでは、自分のjwtをエンコードしてデコードすることができます。

PHPベースのアプリケーションでJWTを使用してください

JWTが何であるかを?qū)Wんだので、PHPアプリケーションでそれらを使用する方法を?qū)Wぶ時(shí)が來ました。この記事を掘り下げる前に、この記事のコードを自由にクローンするか、手順に従ってください。

JWTを統(tǒng)合するために多くの方法をとることができますが、ここに私たちが取るものがあります。

ログインページとログアウトページとは別に、アプリケーションへのすべての要求をJWTを介して認(rèn)証する必要があります。ユーザーがJWTなしでリクエストを行うと、ログインページにリダイレクトされます。

ユーザーがログインフォームに記入して提出した後、フォームはjavaScriptを介してアプリケーションのログインエンドポイントAuthenticate.phpに送信されます。エンドポイントは、リクエストから資格情報(bào)(ユーザー名とパスワード)を引き出し、有効であることをチェックします。

有効な場合、JWTを生成してクライアントに送り返します。クライアントがJWTを受信すると、JWTを保存し、將來のリクエストごとにアプリケーションに使用します。

単純なシナリオの場合、ユーザーは1つのリソースのみを要求できます。それはあまり役に立たず、リクエスト時(shí)に現(xiàn)在のタイムスタンプを含む文字列を返すだけです。

リクエストを行うときにJWTを使用する方法はいくつかあります。當(dāng)社のアプリケーションでは、JWTはBearer Authorization Headerに送信されます。

Bearer Authorizationに慣れていない場合、これはリクエストヘッダーでトークン(JWTなど)が送信されるHTTP認(rèn)証の形式です。サーバーはトークンをチェックし、トークンへの「ホルダー」アクセスを許可するかどうかを判斷できます。

これはヘッダーの例です:

<code>{
    "iat": 1416929109,
    "jti": "aa7f8d0a95c",
    "scopes": [
        "repo",
        "public_repo"
    ]
}</code>
アプリケーションが受信するすべてのリクエストについて、PHPはベアラーヘッダーからトークンを抽出しようとします。それが存在する場合、それは検証されます。有効な場合、ユーザーはリクエストに対する通常の応答が表示されます。ただし、JWTが無効である場合、ユーザーはリソースにアクセスすることができません。

JWT

は、セッションCookieを置き換えることを意図していないことに注意してください。 前提條件

まず、システムにPHPと作曲家をインストールする必要があります。

プロジェクトのルートディレクトリで、Composerインストールを?qū)g行します。これにより、JWT操作を簡素化するサードパーティライブラリであるFirebase Php-JWTと、アプリケーションの構(gòu)成データへのアクセスを簡素化するためにLaminas-Configが導(dǎo)入されます。

ログインフォーム

寫真

ライブラリをインストールした後、Authenticate.phpでログインコードを徐々に記入しましょう。最初に、作曲家によって生成されたオートローダーが利用可能であることを確認(rèn)するために、通常のセットアップを作成します。

<code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE0MTY5MjkxMDksImp0aSI6ImFhN2Y4ZDBhOTVjIiwic2NvcGVzIjpbInJlcG8iLCJwdWJsaWNfcmVwbyJdfQ.XCEwpBGvOLma4TCoh36FU7XhUbcskygS81HE1uHLf0E</code>
フォームの提出を受信した後、資格情報(bào)はデータベースまたは他のデータストアに対して検証されます。この例の目的のために、それらが有効であると仮定し、$ hasvalidcredentialssをtrueに設(shè)定します。

<code>{
    "alg": "HS256",
    "typ": "JWT"
}</code>
次に、変數(shù)のセットを初期化してJWTを生成します。 JWTをクライアントに確認(rèn)できるため、機(jī)密情報(bào)を含めないでください。

指摘する価値のあるもう1つのことは、$ SecretKeyがこのように初期化されていないことです。環(huán)境に設(shè)定して抽出したり、PhpDotenvなどのライブラリを使用したり、構(gòu)成ファイルに設(shè)定したりする場合があります。この場合、JWTコードに集中したいので、これを行うことは避けています。

漏れたり、バージョン制御の下に保管したりしないでください!

ペイロードデータを準(zhǔn)備した後、次にPHP-JWTの靜的エンコードメソッドを使用してJWTを作成します。

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

配列をjson

に変換します
    ヘッダーを生成
  • ペイロードに署名
  • 最終文字列のエンコード
  • 3つのパラメーターを受け入れます:

ペイロード情報(bào)

    key
  • トークンに署名するためのアルゴリズム
  • 関數(shù)の結(jié)果でエコーを呼び出すことにより、生成されたトークンを返します:
jwt

を使用しています

<code>Authorization: Bearer ab0dde18155a43ee83edba4a4542b973</code>
寫真

クライアントがトークンを持っているので、JavaScriptまたは好きなメカニズムを使用して保存できます。ネイティブJavaScriptを使用して操作する方法の例を次に示します。 index.htmlでは、フォームが正常に送信された後、受信したJWTがメモリに保存され、ログインフォームが非表示になり、タイムスタンプが表示されるボタンが表示されます。 jwt

を使用しています

[現(xiàn)在のタイムスタンプの取得]ボタンをクリックすると、承認(rèn)ヘッダーの認(rèn)証後に受け取ったJWTを設(shè)定するResource.phpにgetリクエストが発行されます。

<?php
declare(strict_types=1);

use Firebase\JWT\JWT;

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

ボタンをクリックすると、次のようなリクエストが発行されます。

JWTが有効であると仮定すると、リソースが表示され、その後、コンソールに応答が記述されます。

jwt
<?php
// 從請求中提取憑據(jù)

if ($hasValidCredentials) {
を確認(rèn)します

最後に、PHPでトークンを検証する方法を見てみましょう。いつものように、作曲家のオートローダーを含めます。その後、正しいリクエスト方法が使用されているかどうかを確認(rèn)できます。 JWT固有のコードに焦點(diǎn)を合わせ続けるために、これを行うコードをスキップしました。

$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ā)時(shí)間:生成令牌的時(shí)間
    'iss'  => $serverName,                       // 頒發(fā)者
    'nbf'  => $issuedAt->getTimestamp(),         // 不早于
    'exp'  => $expire,                           // 過期
    'userName' => $username,                     // 用戶名
];
コードは、ベアラーヘッダーからトークンを抽出しようとします。 preg_matchを使用してこれを行いました。関數(shù)に慣れていない場合、文字列上で正規(guī)表現(xiàn)マッチングを?qū)g行します。

ここで使用している正規(guī)表現(xiàn)は、ベアラーヘッダーからトークンを抽出し、他のすべてをダンプしようとします。見つからない場合は、HTTP 400エラー要求が返されます:

デフォルトでは、ApacheはHTTP_AuthorizationヘッダーをPHPに渡さないことに注意してください。その背後にある理由は、

です
<?php     // 將數(shù)組編碼為JWT字符串。
    echo JWT::encode(
        $data,
        $secretKey,
        'HS512'
    );
}

基本的な認(rèn)証ヘッダーは、接続がHTTPSで完了した場合にのみ安全です。そうしないと、エンコードされたプレーンテキスト(暗號化されていない)のネットワークを介してクレデンシャルが送信されるためです。これは大きなセキュリティの問題です。

この決定の論理を完全に理解しています。ただし、多くの混亂を避けるために、Apache構(gòu)成に次のことを追加します。その後、コードは予想どおりに機(jī)能します。 nginxを使用している場合、コードは予想どおりに機(jī)能する必要があります:

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

次に、$ MATCES変數(shù)の2番目の要素になる一致するJWTを抽出しようとします。利用できない場合は、JWTが抽出されず、HTTP 400エラーリクエストが返されます。

<code>{
    "alg": "HS256",
    "typ": "JWT"
}</code>
このポイントに到達(dá)すると、JWTが抽出されているため、デコードと検証フェーズに進(jìn)みます。これを行うには、環(huán)境またはアプリケーションの構(gòu)成から抽出されるキーが再度必要です。次に、PHP-JWTの靜的デコード法を使用して、JWTのデコードに使用されるキーと一連のアルゴリズムであるJWTに渡します。

それが正常にデコードされる可能性がある場合、それを検証しようとします。ここでの私の例は、発行者のみを使用しているため、タイムスタンプよりも早く、期限切れになっているため、非常に簡単です。実際のアプリケーションでは、他の多くのステートメントを使用することもできます。

トークンの有効期限が切れているように、トークンが無効である場合、ユーザーはHTTP 401不正ヘッダーを受け取り、スクリプトが終了します。

デコードと検証プロセスが失敗した場合、
<code>{
    "iat": 1416929109,
    "jti": "aa7f8d0a95c",
    "scopes": [
        "repo",
        "public_repo"
    ]
}</code>

提供されるセグメントの數(shù)は、上記の標(biāo)準(zhǔn)の3つのセグメントと一致しません。

ヘッダーまたはペイロードは有効なJSON文字列ではありません。
  • 署名は無効です。つまり、データは改ざんされています!
  • NBF宣言はJWTで設(shè)定されており、そのタイムスタンプは現(xiàn)在のタイムスタンプよりも小さいです。
  • IAT宣言はJWTで設(shè)定されており、そのタイムスタンプは現(xiàn)在のタイムスタンプよりも小さいです。
  • Exp宣言はJWTで設(shè)定されており、そのタイムスタンプは現(xiàn)在のタイムスタンプよりも大きい。
  • ご覧のとおり、JWTには、有効なトークンのリストを手動で取り消したりチェックしたりすることなく、無効としてマークできるコントロールの素晴らしいセットがあります。
  • デコードと検証プロセスが成功した場合、ユーザーはリクエストを発行することが許可され、対応する応答が表示されます。

概要

これは、JSON Webトークン(またはJWT)の簡単な紹介と、PHPベースのアプリケーションでそれらを使用する方法です。ここから、次のAPIでJWTを?qū)g裝してみてください。RS256などの非対稱キーを使用する他の署名アルゴリズムを試すか、既存のOAUTH2認(rèn)証サーバーに統(tǒng)合してAPIキーとして使用します。 コメントや質(zhì)問がある場合は、Twitterからお?dú)葺Xにお問い合わせください。

PHP承認(rèn)にJWTを使用する

FAQ PHPでJWTを使用できますか?

PHPでJWTを使用して、Webアプリケーションで認(rèn)証と承認(rèn)のメカニズムを確立することができます。開始するには、Composerを使用して、「Firebase/PHP-JWT」や「Lcobucci/JWT」などのPHP JWTライブラリをインストールする必要があります。これらのライブラリは、JWTを作成、エンコード、デコード、および検証するために必要なツールを提供します。 JWTを作成するには、ライブラリを使用して、発行者、視聴者、有効期限などのステートメントを含むトークンを構(gòu)築できます。作成したら、キーでトークンに署名できます。 JWTを受け取るときは、ライブラリを使用してデコードして検証して、その信ity性を確保することができます。トークンが有効で検証されている場合は、宣言にアクセスしてユーザーのIDとアクセス許可を決定し、PHPアプリケーションに安全な認(rèn)証と承認(rèn)を?qū)g裝できるようにします。 鍵を保護(hù)し、JWTを使用する場合のセキュリティベストプラクティスに従うことは、アプリケーションリソースへの不正アクセスを防ぐために重要です。

PHPのJWT認(rèn)証とは何ですか?

PHPでのJWT(JSON Webトークン)認(rèn)証は、Webアプリケーションでユーザー認(rèn)証と承認(rèn)を?qū)g裝するために広く使用されている方法です。これは、トークン認(rèn)証に基づいており、安全でステートレスのユーザー認(rèn)証を可能にします。 JWT認(rèn)証がPHPでどのように機(jī)能するかは次のとおりです。 まず、ユーザー認(rèn)証またはログイン中に、サーバーはJWTを生成します。これは、ユーザーID、ユーザー名、ロールなど、ユーザーに関連するコンパクトで自己完結(jié)型のトークンを含む情報(bào)(クレーム)を生成します。これらの宣言は通常、JSONデータです。次に、サーバーはこのトークンにキーで署名し、その完全性と信頼性を確保します。 第二に、認(rèn)証が成功した後、サーバーはJWTをクライアントに送り返します。クライアントは通常、HTTP Cookieやローカルストレージなどの安全な場所に保存されます。このトークンは、認(rèn)証の証明として機(jī)能します。 最後に、サーバー上のリソースを保護(hù)した後続の要求のために、クライアントは通常、「承認(rèn)」ヘッダーを「ベアラー」スキームで使用して、JWTをリクエストヘッダーに追加します。 JWTを受信した後、サーバーはトークン作成中に使用される同じキーを使用して、その署名を確認(rèn)します。さらに、トークンが期限切れになっておらず、有効な宣言が含まれているかどうかを確認(rèn)します。検証が成功した後、トークン宣言からユーザー情報(bào)を抽出し、承認(rèn)ロジックを?qū)g施して、ユーザーが要求されたリソースにアクセスするために必要な権限を持っていることを確認(rèn)します。このアプローチにより、サーバー側(cè)のセッションストレージなしでPHPアプリケーションで安全でステートレス認(rèn)証が可能になります。 PHPでのJWT認(rèn)証は、スケーラビリティやステートレス性などの多くの利點(diǎn)を提供しますが、キーを保護(hù)し、トークン管理を採用するためのベストプラクティスは、アプリケーションのセキュリティを維持するために不可欠です。確立されたPHP JWTライブラリを使用すると、トークン処理を簡素化し、セキュリティを強(qiáng)化できます。

PHPのJWTの代替案は何ですか?

PHPでの認(rèn)証と承認(rèn)のためのJWT(JSON Web Tokens)の代替案は、セッションベースの認(rèn)証です。セッションベースの認(rèn)証では、サーバーは、認(rèn)証されたユーザーごとに1つのセッションを維持します。ユーザーがログインすると、一意のセッション識別子が作成されます(通常、クライアントブラウザーにセッションCookieとして保存されます)。この識別子は、ユーザーID、ユーザー名、許可など、ユーザーに関連する情報(bào)を含む、ユーザーをサーバー側(cè)のセッションデータに関連付けるために使用されます。 セッションベースの認(rèn)証は、実裝のシンプルさと容易さを提供し、特にJWTのステートレスでスケーラブルな機(jī)能が必要ない場合は、さまざまなWebアプリケーションに適しています。本質(zhì)的には、ユーザーセッション中にユーザー固有のデータ(ショッピングカートのコンテンツやユーザーの好みなど)を管理する必要がある場合に有利になる可能性があります。 ただし、セッションベースの認(rèn)証を使用する際に考慮すべきことがいくつかあります。ステートレス認(rèn)証を必要とする分散またはマイクロサービスベースのアーキテクチャにはあまり適用できない場合があります。さらに、ユーザーセッションの管理は、特により大きなユーザーベースを持つアプリケーションでサーバーの負(fù)荷を増加させる可能性があります。最終的に、PHPでJWTとセッションベースの認(rèn)証を選択することは、アプリケーションの特定のニーズと設(shè)計(jì)上の考慮事項(xiàng)と一致する必要があります。

JWTを使用してPHP APIを保護(hù)する方法は?

PHP APIをJWT(JSON Webトークン)で保護(hù)するには、認(rèn)証と承認(rèn)を組み合わせたマルチステッププロセスが含まれます。まず、適切なPHP JWTライブラリ(「Firebase/PHP-JWT」や「Lcobucci/JWT」など)を選択して、トークン関連の操作を処理し、コンポーザーを使用して依存関係を管理します。 認(rèn)証のために、PHPアプリケーションにユーザー認(rèn)証システムを?qū)g裝する必要があります。このシステムは、データベースまたは認(rèn)証プロバイダーに対してユーザー資格情報(bào)を検証します。認(rèn)証が成功した後、ユーザーのID、ユーザー名、ロールなどのユーザー関連のクレームを含むJWTトークンを生成します。トークンの有効性を制御するために有効期限を設(shè)定し、キーでトークンに署名してください。この署名されたトークンは、認(rèn)証応答の一部としてクライアントに送り返されます。 クライアントは、通常はHTTP Cookieまたはローカルストレージに、受信したJWTを安全に保存します。その後のAPIリクエストの場合、クライアントは「Bearer」スキームを備えた「承認(rèn)」ヘッダーとして、リクエストヘッダーにJWTを含めます。 PHP APIでは、トークンを作成するときに使用される同じキーを使用してその署名を確認(rèn)することにより、著信JWTを確認(rèn)できます。さらに、トークンが期限切れになっておらず、有効な宣言が含まれていることを確認(rèn)します。検証が成功した後、トークン宣言からユーザー情報(bào)を抽出し、認(rèn)証ロジックを?qū)g裝して、ユーザーが要求されたリソースにアクセスするために必要なアクセス許可を確実に持っていることを確認(rèn)します。 キーを安全に保つことは、トークンに署名して検証することが重要であるため、重要です。このキーの漏れは、深刻なセキュリティの脆弱性につながる可能性があります。

以上がJWT(JSON Web Tokens)によるPHP認(rèn)証の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP変數(shù)スコープは説明されています PHP変數(shù)スコープは説明されています Jul 17, 2025 am 04:16 AM

PHP変數(shù)スコープの一般的な問題とソリューションには次のものが含まれます。1。グローバル変數(shù)は関數(shù)內(nèi)でアクセスできず、グローバルキーワードまたはパラメーターを使用して渡す必要があります。 2。靜的変數(shù)は靜的で宣言され、1回のみ初期化され、値は複數(shù)の呼び出し間で維持されます。 3. $ _GETや$ _POSTなどのハイパーグローバル変數(shù)は、任意の範(fàn)囲で直接使用できますが、安全なフィルタリングに注意を払う必要があります。 4.匿名関數(shù)は、使用キーワードを使用して親スコープ変數(shù)を?qū)毪工氡匾ⅳ?、外部変?shù)を変更する場合は、參照を渡す必要があります。これらのルールを習(xí)得すると、エラーを回避し、コードの安定性が向上するのに役立ちます。

ファイルアップロードをPHPで安全に処理する方法は? ファイルアップロードをPHPで安全に処理する方法は? Jul 08, 2025 am 02:37 AM

PHPファイルのアップロードを安全に処理するには、ソースとタイプを確認(rèn)し、ファイル名とパスを制御し、サーバー制限を設(shè)定し、メディアファイルを2回プロセスする必要があります。 1.トークンを介してCSRFを防ぐためにアップロードソースを確認(rèn)し、ホワイトリストコントロールを使用してFINFO_FILEを介して実際のMIMEタイプを検出します。 2。ファイルをランダムな文字列に変更し、検出タイプに従って非WEBディレクトリに保存する拡張機(jī)能を決定します。 3。PHP構(gòu)成は、アップロードサイズを制限し、一時(shí)的なディレクトリnginx/apacheはアップロードディレクトリへのアクセスを禁止します。 4. GDライブラリは寫真を再利用して、潛在的な悪意のあるデータをクリアします。

PHPでコードをコメントします PHPでコードをコメントします Jul 18, 2025 am 04:57 AM

PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお勧めします。 2。使用/.../複數(shù)の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時(shí)にネストを避ける必要があります。

発電機(jī)はPHPでどのように機(jī)能しますか? 発電機(jī)はPHPでどのように機(jī)能しますか? Jul 11, 2025 am 03:12 AM

ageneratorinphpisamemory-efficientwaytoateate-overdeatatasetasetasetasetsinging valueseintimeintimeturningthemallatonce.1.generatorsususedeywordproducevaluesedemand、memoryusage.2を還元すること。2

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統(tǒng)合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強(qiáng)調(diào)します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全體的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進(jìn)します。優(yōu)れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

クイックPHPインストールチュートリアル クイックPHPインストールチュートリアル Jul 18, 2025 am 04:52 AM

to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2

PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛裝具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお勧めします。インデックスは0から始まり、範(fàn)囲外のアクセスはnull値を返し、値を割り當(dāng)てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結(jié)果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関數(shù)を均一に使用することをお勧めします。

PHPの學(xué)習(xí):初心者向けガイド PHPの學(xué)習(xí):初心者向けガイド Jul 18, 2025 am 04:54 AM

tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech

See all articles