0

HTTP 要求を Java Web サービスに送信する PHP ベースの Web アプリケーションを使用しています。Java Web サービスは、Oracle データベースで要求されたアクションを実行します。HTTP リクエストでパスワードを送信する前に、password_hash を使用してパスワードをハッシュしたいと考えています。新しいユーザーの作成時にこれを行うと、問題はありません。ただし、このパスワードを使用してログインする必要がある場合、データベースに直接アクセスしてそこに保存されているハッシュを取得できないため、PHP で確認できません。したがって、検証は Java Web サービスで行う必要があります。それは可能ですか?そうでない場合、代替手段は何ですか?使用されているソルトはランダムであるため、ログインに使用されているパスワードをハッシュして送信することはできません。これは、ハッシュに使用されるソルトがデータベースに保存されていないためです。

4

1 に答える 1

0

Webサービスのサービスとしてログインし、ログイン機能にチェックを追加して、PHPサーバーのみがアクセスできるようにします(サービス全体にはPHPサーバーのみがアクセスできると想定しています。そのため、PHPサーバーを分離していますそもそも)。セッションを開いたままにするには、ログインを時々更新 (ping) する必要があります。サービスのすべての操作は、このセッションが有効であることを確認します。Web サービスがプルでのみ実行されている場合は、Java エージェントがアイドル状態の接続を閉じます。 /押す。

ユーザーから php を介して Web サービスにログインを中継し、そこで完全にログインしてから、php に戻って、ユーザーが認証されたらサービスを開始するという退屈なタスクを実行する必要があります。

それがセキュリティ上のリスクである場合 (PHP にパスワードのハッシュさえ持たせたくない場合)、ユーザーが自分で Web サービスにログインしてから、あなたに連絡し、ユーザーがログインしているユーザーであることを確認して、サービスを開始する必要があります。

ハッシュとソルトに関しては、データベース上の暗号化されたデータが盗まれたり読み取られたりするのを防ぐために使用されます。(最も単純な形式では、クレジット カード番号を保護するため)。ソルトはパブリックにすることができ、技術的にはハッシュも可能ですが、少なくともSSLで保護して、誰もそれを使用してログインできないようにする必要があります(または、ユーザーがそれを送信する場合はプレーンパスワード):P. プレーンパスワード>ハッシュ、次にソルトを追加>ソルトと結果の両方をデータベースに保存します。

PHP がログイン データを中継する場合、PHP は Cookie+ブラウザ エージェント+IP を使用してユーザーの ID を認識しているため、セッションの側を保持できます (サービスとのセッションを開いたままにしておく必要があります)。ユーザーが Web サービスに直接ログインする場合、PHP はその情報を Web サービス (可能であれば IP + ブラウザー エージェント) に要求するか、セッション トークン (サービスによって生成された文字列) を要求する必要があります。ユーザーがトークンの期間中に PHP サーバー上の任意のページにアクセスしたい場合。

于 2015-03-30T09:41:55.620 に答える