ホームページ >バックエンド開発 >PHPチュートリアル >PHPインターフェースのトークンの詳細説明
1. 非オープンであるため、すべてのインターフェイスは社内製品に対してのみ有効です。非オープンセクシュアルであるため、中間のユーザー認証プロセスがないため、OAuth プロトコルは実行できません。
4. 一部のインターフェースでは、アクセスするためにユーザーのログインが必要ありません。
PHP Token
上記の特性を考慮すると、モバイル端末とサーバー間の通信には 2 つのキー、つまり 2 つのトークンが必要になります。
最初のトークンはインターフェース (api_token) 用です。
最初のトークン (api_token) について説明します
その役割はインターフェースへのアクセスを維持することです。隠蔽性と有効性により、インターフェイスは自分の家族だけが使用できるようになります。参照アイデアは次のとおりです:
サーバーとクライアントの両方で共有される共通属性に基づいてランダムな文字列を生成します。クライアントはこの文字列を生成し、サーバーも同じアルゴリズムに基づいて文字列を生成して、クライアントの文字列を検証します。
現在のインターフェイスは基本的に MVC モードで、URL は基本的に RESTful スタイルです。URL の一般的な形式は次のとおりです:
ここで、
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、验证通过,返回数据给客户端 ?>
1. ユーザーはログインするために「ユーザー名」と「パスワード」を送信します (条件が許せば、このステップでは https を使用するのが最善です)。
2. ログインに成功すると、サーバーは 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 サイトの他の関連記事を参照してください。