この記事では主にphpインターフェースのトークンについて詳しく説明しますので、お役に立てれば幸いです。まずインターフェイスの機能の概要を見てみましょう:
インターフェイスの機能の概要:
1. 非オープンであるため、すべてのインターフェイスは社内製品に対してのみ有効です。非オープンセクシュアルであるため、中間のユーザー認証プロセスがないため、OAuth プロトコルは実行できません。
4. 一部のインターフェースでは、アクセスするためにユーザーのログインが必要ありません。
PHP Token
上記の特性を考慮すると、モバイル端末とサーバー間の通信には 2 つのキー、つまり 2 つのトークンが必要になります。
最初のトークンはインターフェース (api_token) 用です。
最初のトークン (api_token) について説明します
その役割はインターフェースへのアクセスを維持することです。隠蔽性と有効性により、インターフェイスは自分の家族だけが使用できるようになります。参照アイデアは次のとおりです:
サーバーとクライアントの両方で共有される共通属性に基づいてランダムな文字列を生成します。クライアントはこの文字列を生成し、サーバーも同じアルゴリズムに基づいて文字列を生成して、クライアントの文字列を検証します。
現在のインターフェイスは基本的に MVC モードで、URL は基本的に RESTful スタイルです。URL の一般的な形式は次のとおりです:
インターフェーストークンの生成ルールは以下の通り:
api_token = md5('モジュール名' + 'コントローラ名' + 'メソッド名' + '2013 -12-18' + '暗号化キー') = 770fed4ca2aabd20ae9a5dd774711de2 ここで、
1、'2013-12-18' は時刻、
2 '暗号化キー' は秘密暗号化キーであり、携帯電話に必要です。サーバーに「インターフェース」を登録するには、「ユーザー」アカウントを使用すると、システムによってアカウントとパスワードが割り当てられます。データテーブルの設計リファレンスは次のとおりです:
フィールド名 フィールドタイプ注釈
client_id varchar(20) クライアントID
client_secret varchar(20) ) クライアント (暗号化) キー
サーバー インターフェイスの検証、PHP 実装プロセスは次のとおりです:
<?php // 1、获取 GET参数 值 $module = $_GET['mod']; $controller = $_GET['ctl'] $action = $_GET['act']; $client_id = $_GET['client_id']; $api_token = $_GET['api_token‘]; // 2、根据客户端传过来的 client_id ,查询数据库,获取对应的 client_secret $client_secret = getClientSecretById($client_id); // 3、服务端重新生成一份 api_token $api_token_server = md5($module . $controller . $action . date('Y-m-d', time()) . $client_secret); // 4、客户端传过来的 api_token 与服务端生成的 api_token 进行校对,如果不相等,则表示验证失败 if ($api_token != $api_token_server) { exit('access deny'); // 拒绝访问 } // 5、验证通过,返回数据给客户端 ?>
2 番目のトークン (user_token) について話しましょう
その責任は、ユーザーのユーザー名とパスワードが複数回送信されないように保護することですパスワード漏洩を防ぐための時間です。
インターフェースがユーザーログインを必要とする場合、アクセスプロセスは次のとおりです:
1. ユーザーはログインするために「ユーザー名」と「パスワード」を送信します (条件が許せば、このステップでは https を使用するのが最善です)。
2. ログインに成功すると、サーバーは user_token を返します。生成ルールは次のとおりです:user_token = md5('user's uid' + 'Unix timestamp') = etye0fgkgk4ca2aabd20ae9a5dd77471fgf
サーバーは user_token のステータスを維持するためにデータ テーブルを使用します。テーブルの設計は次のとおりです:フィールド名 フィールド タイプ 注釈
user_id int ユーザー ID
user_token varchar(36) ユーザー トークン
expire_time int 有効期限 (Unix タイムスタンプ)
(注: コア フィールドのみがリストされており、その他は展開可能です!!!)
サーバーによって生成 user_token がクライアントに返された後 (それ自体が保存されます)、クライアントがインターフェース要求を行うたびに、インターフェースにアクセスするためにユーザーのログインが必要な場合、user_id と user_token はサーバーがこれら 2 つのパラメータを受け取った後、次の手順を実行する必要があります:
1. 期限切れの user_token テーブル レコードを削除します。 user_id、user_token に基づいて、テーブルのレコードが存在しない場合は、エラーが直接返されます。レコードが存在する場合は、次のステップに進みます。
4. 継続的な操作を保証するために延長されます。有効期間中は削除されません);
5. インターフェースデータを返す;
リクエストメソッド: POST
POST パラメータ: title=I am the title&content=I am the content
戻りデータ:
{ 'code' => 1, // 1:成功 0:失败 'msg' => '操作成功' // 登录失败、无权访问 'data' => [] }
トークンハイジャックを防ぐには?
トークン漏洩の問題が必ず発生します。たとえば、あなたの携帯電話を入手してトークンをコピーすると、有効期限が切れる前に他の場所であなたとしてログインできます。
この問題を解決する簡単な方法
1. 保存するときに、トークンを対称的に暗号化して保存し、使用時に復号化します。
2. リクエスト URL、タイムスタンプ、トークンを組み合わせてソルト署名を追加すると、サーバーが有効性を検証します。
両方の方法の出発点は、保存されたデータを盗むのは簡単ですが、プログラムを逆アセンブルして暗号化、復号化、署名アルゴリズムをハッキングするのはより困難であるということです。しかし、実際は難しいと言えば難しいことではなく、結局のところ、悪人を警戒するのではなく、紳士を警戒することになります。
関連する推奨事項:
以上がPHPインターフェースのトークンの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ホットトピック









