前に述べたように: モバイル端末と PHP サーバーインターフェースの通信プロセス設計 (基本バージョン)
api_token の検証のために、そのセキュリティをさらに強化できます:
強化 1:
さらに 2 つのテーブルを追加インターフェーステーブルと認可テーブルの設計参照は次のとおりです:
インターフェーステーブル
フィールド名 | フィールドタイプ | コメント |
api_id | int | インターフェースID |
api_name | varchar(120) | 「/」で区切られたインターフェース名 (blog/Index/addBlog など) |
varchar(255) | Domain | |
ちっちゃい(1) | 1 は使用可能、0 は使用できません | |
int | 時刻を追加 |
認証フォーム ..
API 番号
api_name | varchar(120) | |
is_enabled | tinyint(1) | |
add_time | int | |
expire_time | int | 期限切れ時間 (スタンプ) |
(注: コアフィールドのみがリストされています。他のフィールドは展開してください!!!)
実行プロセスは次のとおりです: 1. モバイル端末とサーバーによって生成された api_token を比較します。等しくない場合は、直接エラーを返します。そうでない場合は、次のステップに進みます。 2. インターフェース URL に従って、api_name とクライアントからパラメーターとして返された client_id を組み立て、「Authorization Table」レコードを検索します。レコードが存在し、有効である場合 (使用可能かどうか、期限切れかどうか)、権限の検証に合格し、インターフェイス データが返されることを意味します。そうでない場合は、エラー メッセージが返されます。 いくつかの非常に特殊なインターフェースについては、どのように特殊なのか、どのインターフェースが特殊なのかはわかりません。要するに、http リクエストがハイジャックされ、渡されたパラメーターが改ざんされている可能性があると感じています。例:ページに 5 元を入力しました。これは、誰かが 5 元を送金したいのですが、HTTP 送金プロセス中にハイジャックされて変更されました。考えてみると、この問題を解決するにはいくつかの解決策があります。
オプション 1: を使用します。 https、これについては詳しく説明しません。これは、より認識されたセキュリティ メカニズムです。 オプション 2: デジタル署名を使用します。実装原則は次のとおりです:
次の 3 つのパラメータが必要な場合渡されるパラメータ
パラメータ名 1 = パラメータ値 1 パラメータ名 2 = パラメータ値 2 パラメータ名 3 = パラメータ値 3
別のパラメータを追加できます。パラメータの名前は、identity_key (名前は重要ではありません)、このパラメータの値は、前のパラメータ値を順番に追加して暗号化した結果です。 つまり: identity_key = md5('パラメータ値 1' + 'パラメータ値 2' + 'パラメータ値 3' + '暗号化キー'); したがって、渡される最終パラメータは次のとおりです:
Parameter名前1=パラメータ値1 パラメータ名2=パラメータ値2 パラメータ名3=パラメータ値3 client_id=client_id値 identity_key=md5('パラメータ値1' + 'パラメータ値2' + 'パラメータ値 3' + 'client_id 値' + '暗号化キー')
サーバーはパラメータを受信した後、同じ暗号化ルールに従ってidentity_keyを再生成します。サーバーのidentity_keyとクライアントのidentity_keyが検証されます。そうでない場合は、それが改ざんされていることを意味します。次に何をするかはあなた次第です。 |