質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Security+

Security+は、IT業界団体であるCompTIA認定の資格の一つです。ネットワークセキュリティやコンプライアンスと運用セキュリティといったセキュリティ分野における知識・技術の証明になり、セキュリティインシデントに対応するための知識も評価されます。

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

解決済

1回答

958閲覧

クッキーの物理コピペ -> 不正ログイン対策

mj-tm

総合スコア8

Security+

Security+は、IT業界団体であるCompTIA認定の資格の一つです。ネットワークセキュリティやコンプライアンスと運用セキュリティといったセキュリティ分野における知識・技術の証明になり、セキュリティインシデントに対応するための知識も評価されます。

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

3クリップ

投稿2019/02/09 15:49

編集2019/02/09 16:40

前提・実現したいこと

自動ログインを実装しています。

  1. クッキーに自動ログイン用のデータを保存しました。
  2. https通信やクッキーの適切なオプションの属性など設定し、通信によって不正取得されない状況と仮定とします。
  3. しかしPCに物理的に触られて(見られて)しまい、クッキーをコピーされた場合、他人に自動ログインされてしまいます。

自動ログイン用のデータを、暗号化やhash化をしても、直接的に情報を解読しにくいだけで、
「全文をコピペ」
「全文をスマホで写メ」
などして、悪意あるユーザーが別ブラウザーで、全く同じKeyValでクッキーの送信すると自動ログイン出来てしまいます。

実現したい事は、
このような物理でのクッキー盗聴に対して、対策や工夫はあるのでしょうか?

試したこと、及び理想の状態

PHP7.3のセッションIDで、同様にKeyValをコピペして試した場合は、
セッションを使ったログイン(session_start()関数)では、認証は出来ませんでした。
C言語が読めないので、どういった工夫で成りすましを識別しているか不明ですが、理想の挙動は正にコレです。

セッション切された後の、RememberMe(自動ログイン用のクッキー情報)でも、
セッションIDと同様の挙動ができる工夫はあるのでしょうか?
コピペで偽造されたクッキーを識別する方法を知りたいです。

思いついたこと

今のところ思いつくのは、
完璧でないにせよ、自動ログイン用tokenを発行したリクエストのIPを、tokenに混ぜる、、です。
しかし、スマホだとコロコロIPが変わるので
「確実に不正が防げるわけではない&&にも関わらず不便になる」という予想から見送ってます。

お手数おかけしますが、お知恵をお貸し下さい。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

通常のブラウザアプリの場合、クッキーを窃取された場合になりすましされることは許容しています。ご指摘のように、簡便で有効な対策がないことと、そもそもブラウザからクッキーを窃取される状況では、端末自体を「ハイジャックされている」わけですから、ウェブアプリケーション側で頑張っても仕方ない、ということがあると思います。類似の状況として、パソコン等がウイルス感染している場合の対処も、通常はあまり頑張らずに、「ウイルスに感染したら仕方ない」と考えます。

PHP7.3のセッションIDで、同様にKeyValをコピペして試した場合は、
セッションを使ったログイン(session_start()関数)では、認証は出来ませんでした。
C言語が読めないので、どういった工夫で成りすましを識別しているか不明ですが、理想の挙動は正にコレです。

ここは、おっしゃっている意味がわかりませんでした。

今のところ思いつくのは、
完璧でないにせよ、自動ログイン用tokenを発行したリクエストのIPを、tokenに混ぜる、、です。
しかし、スマホだとコロコロIPが変わるので
「確実に不正が防げるわけではない&&にも関わらず不便になる」という予想から見送ってます。

この種の方法は、「現場の知恵」として実装されることは結構あります。IPアドレスの他、User-Agent等も利用されます。ご指摘のようにメリットがあまりない上にデメリットもあるので、「おすすめ」というわけではありません。

ということで、あまり有効な対策もないのですが、参考になるものとしては、再認証やオンラインバンキングでの二経路認証などがあります。これらは、通常の「なりすまし」は最悪許容するが、個人情報閲覧や振込操作等の前には、パスワードをもう一度入力してもらうとか、スマホアプリ側にユーザー操作の内容を転送して、スマホ側で許可を与えるというものです。
これらも、「そこまでするか?」とも思いますが、要求次第かと思います。

投稿2019/02/10 05:56

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mj-tm

2019/02/15 01:02

ご回答ありがとうございました。 重要な動作の前には、対策として、再認証や二経路認証を検討致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問