私は自分のサイト用に設計したいくつかの粗いWeb APIにアクセスするためにトークンベースの認証を使用しています。ログイン時には、ユーザー名とパスワードがログインAPIに送信され、一意の秘密鍵を持つトークンが生成され、そのキーがデータベースに格納されます。その後の各呼び出しで、トークンは要求とともに送信され、サーバー上で秘密鍵で検証されます。トークンベースの認証システムのトークンを保護する
私はこのAPIサービスを利用してユーザーにフロントエンドを提供するためにウェブアプリケーションを使用しています。 WebアプリケーションはHTML/Bootstrap/JQueryを使用して設計されており、バックエンドはPHPで書かれています。
私は正常に私のアプリをテストし、トークンベースの認証が動作します。しかし、私には一つの懸念があります。私は、ユーザーのIDとトークンはブラウザのアドレスバーにURLエンコーディングを使用して直接表示されることがわかりました。
今http://hasconpanel.ckoysolutions.com/hasconpanel.php?inputs={%20%22username%22%20:%20%22Debopam%20Parua%22%20,%20%22uid%22%20:%20%2220170520193421DP%22%20,%20%22token%22%20:%20%22Sa2pHyooWPoI79vfvJzLlw7UO%252B2p5hOpBttkEq7LQ%252BjAGm9XEmxfhLAcnJoLbqrsXCp75%252BG1M7nEUoCgsDVbIQ%253D%253D%22%20,%20%22list_of_devices%22%20:%20[{%22device_code%22:%22b8:27:eb:f1:b3:0f%22,%22device_name%22:%22First-Pi%22}]%20}
、このアドレスをコピー、またはブラウザが、それをアクセスしようと関係なく、前のセッションを再開するためになされたものであり、彼らはエントリを取得するとしている場合。特に公共のコンピュータセンターの場合、誰かが私のWebアプリケーションに資格情報でアクセスしてブラウザを強制終了する前にログアウトしなくても、トークンシステムは悲惨に失敗するようです。とにかくそれを暗号化するようなトークンを保護するにはありますか?または、ブラウザやブラウザのタブが閉じたときにパラメータを保存しない、または少なくともアドレスバーに表示しないようにアプリを設定する私は毎回の要求で新鮮なトークンを作ることを考えましたが、システムを大幅に遅くするので、私はそれを避けたいと思います。
この問題を解決する方法をご提案ください。
ありがとうございます。
APIシステムは、共有サーバーのメインドメインでホストされている、とアプリがサブドメインでホストされています
編集:システムは現在、どのように機能するかを説明 。メインドメインには、自宅にインストールされたいくつかのラズベリーのピースから呼び出されているいくつかのWebサービスもあります。
これは動作します。ログインはプライマリWebサイトから行われ、ログインに成功すると、ユーザID、トークン、およびユーザの作業デバイスのリストを含むgetコールでWebアプリケーションが呼び出されます。これらの3つのパラメータのいずれも指定せずにアプリケーションページにアクセスしないようにするためのチェックが用意されています。新しい負荷では、ユーザーはドロップダウンメニューからデバイスを選択する選択肢を得ます。現在、これらの作業デバイスのそれぞれは、3つの別々のシステムを実行できます。したがって、デバイスを選択すると、選択されたデバイスが以前の3つのパラメータとともにパラメータとして追加された状態で、アプリケーションにget呼び出しが再び行われます。トークンとUIDがアドレスバーに表示されます。
API呼び出しのポストリクエストを使用することができます。 –
ポストは彼がHTTP –
BTW上で動作している限り彼を守ることはできません。今では無料のSSL証明書を取得することができるので、httpsを使用しない理由はありません。人々が電子メールとパスワードで登録しなければならない場合は、HTTPSが必要です。https://letsencrypt.org/ –