以下は、ウェブサイトのセキュリティ状況に対処するための提案です。技術的にも使いやすさの面からも、実現可能かと思います。私は提案が明白なエラーを含んでいることを確認したいと思います。
問題のウェブサイトは、学生がさまざまなアイテムを購入できる学校のウェブサイトです。これらの学生は、ユーザー名とパスワードを使用してWebサイトでアカウントを取得し、ログインに使用できます。ログインすると、一般ユーザーは利用できないプライベートコンテンツを含む保護されたページにアクセスできます。
Webサイトの所有者は、1人の学生がWebサイトにサインアップし、ユーザー名とパスワードを取得して、その資格情報を友達のサークルに配布し、友達がWebサイトにログインして、非公開でプライベートを表示できるようにします。コンテンツ。
このセキュリティ問題に対処するために私たちが考案した中心的なアイデアは、各学生が2台のデバイスでのみWebサイトにログインできるようにすることです。生徒が2つの異なるデバイスにログインすると、それらは2つのデバイスに制限されます。その後、3番目のデバイスにログインしようとすると、システムはログインを許可しません。 Netflixなどのプライベートコンテンツを提供する他のWebサイトがそのようなアプローチを使用していることは私たちの理解です。
上記のセキュリティ対策を実装するには、IPアドレスとCookieの2つのアイデアが思い浮かびます。変更可能なIPアドレスを除外し、Cookieを選択します。 Amazon.comなどのウェブサイトでは、顧客は一度ログインすると、そのウェブサイトに戻るたびに常に認識されます。これはほぼ確実にCookieによって実現されます。
したがって、学生がログインするたびに、デバイスにCookieが保存されます。また、このCookieをその学生のアカウントのデータベースに保存します。したがって、生徒がいずれかのデバイスにログインするたびに、生徒が現在ログインしているデバイスに、その生徒用に保存したCookieが含まれているかどうかを確認します。そうでない場合は、生徒が別のデバイスにログインしていることがわかります。これにより、生徒がログインしようとしているデバイスの数を知ることができます。
このアプローチには、少なくとも3つの考えられる欠点があります。
このような状況に対処するためにシステムにロジックを組み込む方法についていくつかのアイデアがありますが、当面は実装する可能性がありますが、そのような状況は、プログラムで処理する必要がないほど十分にまれであると感じています。
むしろ、今のところ、生徒がロックアウトされた場合、生徒がシステムに許可されなかった理由を説明するメッセージと、自動的にメールを生成するボタンをクリックすることができます。サイト管理者。
メールには、生徒が3台目のデバイスにログインすることを希望していることが通知されます。その後、管理者は学生に連絡できます。管理者は、ニーズが正真正銘であると納得した場合、CMSからその学生を許可するための手順を実行できます。
学生の体の大きさは、上記のアプローチが実行可能であるべきであるように十分に管理可能です。
不快な驚きを防ぐために、アカウントがアクティブになったときにこれらのセキュリティ対策を学生に通知します。
あなたがしようとしていることは無駄です。情報を含めることはできません。誰かが情報を渡すのを防ぐことはできません。ログインを共有できない場合は、テキストをコピーして貼り付けます。コピーと貼り付けを無効にすると(これを行うための一般的な方法は簡単に回避できます)、スクリーンショットが作成されます。スクリーンショットを不可能にする方法を見つけたとき(私は何も考えられませんでした)、彼らはお互いにそれを読みます。あなたが達成するすべては、実際の乱用を防ぐことなく、正当なユーザーのユーザー体験を損なうことです。
しかし、本当にその道を進みたいときは、ブラウザのフィンガープリントのIPアドレスとCookie以外の方法を検討するかもしれません。 Webブラウザーがすべてのページ要求で送信する他の多くの情報があり、多くの場合、それはユーザーを識別するのに十分固有のものです。 Electronic Frontier Foundationには、 Panopticlick のWebサイトに興味深いデモがあります。
使用される手法には次のものがあります。
これらの識別方法の多くはいつでも変更される可能性があるため、これらの識別方法はすべて偽陰性になりやすいことに注意してください。複数のプロパティが大幅に同時に変化する場合にのみ、指紋を新しいデバイスから取得したものと見なしてください。以前のデバイスプロファイルとの違いが小さい場合は、代わりにデバイスフィンガープリントをサイレントに更新する必要があります。
既存の回答に加えて、Cookieは信頼性の高い永続的なストレージを意味するものではないことを強調したいだけです。たとえば ブラウザクラッシュ の後、アップグレード、プロファイルの破損など、ユーザーの同意を求めずにクリアすることができます。
ユーザーに公正な警告を発行して、Cookieを保持することを期待することはできません。それは単に彼らの管理下にありません。
ユーザーが自分の資格情報を共有することを本当に妨げる可能性があるのは、悪用の可能性です(たとえば、SOパスワードを提供することはありません。条件がそうであるとは限らないが、私になりすまして悪用することです)。生徒がすでに学校で管理されているアカウント(学校のメール、イントラネットなど)を持っているかどうかと、この既存のシステムに認証を委任できるかどうかを確認します(生徒が学校の電子メールとパスワードを資格情報として使用してログインします)言うまでもなく、生徒がそのような資格情報を友達に教えて、店を見せるだけにすることはほとんどありません。
これが無駄であるという事実は別として、すでに確立されていますが、考慮できる追加の手段があります。強制的な2要素認証です。各ログインアカウントで2FAトークン(Google認証システムなど)の登録が必要な場合、またはサイドチャネルを通じて送信された確認リンクをクリックするだけで、ユーザーが別のユーザーのように見える場合は、エントリの障壁が高くなる可能性があります。
質問が「これでうまくいきますか」の場合、答えは「いいえ」です。追加のフィンガープリントがなければ、学生がCookieデータを共有するだけでかなり簡単です、スキームを完全に無力にします。 (そして、追加のフィンガープリントがある場合、実際にはセッションCookieは必要ありません。)
質問が「これは良いアイデアですか」である場合、答えはまだノーです。実際にあなたが望むことを達成しないことは別として、それは問題を引き起こします正当なユーザー。このスキームは、生徒にアカウントを共有しないように依頼するよりも、あらゆる方法で悪化します。
あなたの質問が「これをより良い方法で行うことができるか」である場合、申し訳ありませんが、答えはまだノーです。 @Philippの回答で述べたように、フィンガープリントの一部の形式は、コンテンツにアクセスしているユニークユーザーの数を追跡し、おそらく直接アクセスする数を制御するのに役立つ場合があります。前述のように、これは不正確な科学であり、完全に正確ではありません。
ただし、その問題は、指定した目標が何人のユーザーを制御することではないということです直接情報にアクセスします。情報にアクセスする人数です。 DRMを使用してこれをより困難/煩わしくすることもできますが、技術的な対策を講じてデータを完全に安全に制限することは、文字通り単純には不可能です。生徒がデータにアクセスできるようになったら、完全にサービスの外部で、生徒がそのデータを共有するのを止めることはできません。 (注:DRMを追加することは、期待するよりもはるかに大きなプロジェクトになる可能性があるだけでなく、実行可能ファイルやビデオなどのバイナリデータの場合にもほとんど役立ちます。プライベートデータのかなりの部分がテキストの場合、たくさんのことができるようになります。)
最善の解決策は、単に生徒にそれをしないように依頼することです。個人データで学生を信頼できない場合は、データを利用可能にするべきではありません。
これを実行することにまだ決心している場合(そうではないことを願っています)、私の推奨事項は、何らかの形で含めることです- 架空のエントリ データ内。学生のユーザーアカウントに基づいてプログラムで生成されます。生徒が共有することを妨げることはありませんが、データが想定外の場所に表示された場合、少なくとも最初に共有した人を追跡できる可能性があります。
あなたはNetflixについて言及していますが、あなたの提案とNetflixの間には重要な違いがあります。 Netflixは、「事前認証」できるデバイスの総数に制限を適用します。つまり、ユーザーは一度にパスワードや認証コードを再入力する必要がありませんが、制限は高くなっています(以前は6、現在は50)、ユーザーが制限に達した場合、新しい認証を拒否せず、最も最近使用されていないデバイスの認証を解除するだけです。また、実際に同時にビデオをストリーミングするデバイスは1つ(アカウントによっては2つまたは4つ)に制限されます。
また、Cookieのみを使用してデバイスを識別することで、1台のコンピューターを使用しているユーザーがブラウザーを切り替えます(たとえば、IEとFirefox、またはIEとChrome、またはIEとOpera、またはChromeとFirefox)は2つのデバイスを使用しているように見えます。ユーザーが一部のアプリケーションのテクニカルサポートに電話をかけ、「Cookieをクリアする」と言われた場合(一般的な最初のステップ)、ユーザーは新しいデバイスを使用しているように見えます。私の子供のAndroidタブレットにも2つのブラウザがあり、AndroidのデフォルトのブラウザとChromeです。
「コンテンツ」が写真やテキストである場合、最悪の場合、画面にカメラを向けることでコピーされるのを防ぐことはほとんど不可能です。
したがって、少なくともユーザビリティの観点からすると、提案には明白なエラーがあります。
これから始めましょう:あなたの解決策が、彼らがそのウェブサイトにあるものを友達と共有するのを防ぐことからあなたを助けることはないと思います。
なぜ?
画面共有を行ってから、そのサイトの内容を見せたらどうなるでしょうか。共有に関しては、それを止めることはできません。スクリーンショットを撮ったり、印刷したり、ビデオを録画したりできます。
代替
A:これを行う1つの方法は、Webshopを学校のPC上の学校のネットワークでのみ利用できるように制限することです。これを行う理由は、次のことができるためです。
そうは言っても、彼らはまだ自分の携帯電話で写真を撮り、この方法で物事を共有することができます。
B:導入する労力とセキュリティの量は、保護しようとしているものに直接関係しているはずです。超安全なWebアプリ全体を再考して、人々が定期的にログインして共有を強く勧めないようにしたいとします。その後、アクティビティの「確認」を行うことができ、人々が正当な方法でアカウントを使用していない場合は、ウェブショップからのアクセスを制限します。
有料コンテンツのあるトラフィックの多いWebサイトの1つに同様のメカニズムを実装しました。ブラウザセッションCookieを使用してそれを実現しました。現在のセッションCookieはDBに保存されます。他の場所からログインしたためにcurrent Cookieが変更された場合、最初のセッションは再度ログインする必要があります。これは必ずしも資格情報の共有を妨げるわけではありませんが、複数のユーザーがサイトを同時に使用することを防ぎます。 2人以上のユーザーがサイトを同時に使用することを決定した場合、すべてのページにアクセスするたびに全員が常に再ログインする必要があり、それを防ぐには十分に煩わしいでしょう。ある時点で、元のアカウント所有者はうんざりし、自分のパスワードを変更して再び共有することはありません。
そうは言っても、この機能をオンにしていくつかのテストを行った後、この機能を無効にすることにしました。これを行った理由はいくつかあります。
少し回答とは少し異なりますが、学生がパスワードを共有しないように、ユーザーアカウントに個人情報を追加することをお勧めしますwant。
たとえば、彼らのアカウントを彼らの学校の学年のデータベースにリンクします。さらに、電話番号、年齢、住所、保護者の氏名などを追加します。ユーザー自身が変更することはできませんですが、担当の学校のみが変更できます。
私の学校もこのように使用しています。私の学校にはエッセイ(例:)を提出するWebサイトがあり、パスワードの共有を防ぐために、スケジュール、マーク、個人の詳細などとリンクしています。
他の人が言ったように、個人/アカウントを完全に識別して区別することは不可能です。がんばって!
あなたが提案しているものは機能しません。人々はさまざまなブラウザーを使用し、プライバシーモードに移行し、仕事用コンピューターにログインし、自分の電話からログインし、他の誰かのコンピューターから常にログインします。他の問題を解決するためだけに、常にCookieをクリアするように言われています。私自身、複数のコンピューターを使用しており、複数のブラウザーを使用しています。あなたのサイトは、1〜2日以内に完全に使用できなくなります。あなたのウェブサイトは本質的に非常にすぐに使用できなくなり、学生は絶えずログインする要求であなたを爆撃します。 Cookieは永続化することを意図していないため、本当にひどい永続的ストレージになります!
実際、Netflixは、1人のユーザーが同時にストリーミングできるストリームの数を制御します。しかし、彼らはこれを積極的に行います。単に永続するCookieに依存するだけではありません。ログインの量を制御する必要がある場合は、アクティブなログインの量を追跡する必要があります。つまり、単純なCookieアプローチではなく、ブラウザページが開いているかどうかを追跡します。これを行う1つの方法は、サーバーにpingをアクティブに送信するWebサイトで実行されているJavaScriptを使用することです。 pingが受信されなくなったら、そのログインを無効にします。
どういうわけかアクティブなログインを追跡しないと、傷ついた世界にいることになります。あなたは小さいのでしばらくの間これを偽ることができると思うかもしれませんが、あなたのサイトはまだ使用できません、そしてすべてが人々がログインを共有するのを防ごうとしているからです。
Amazonが解決しなければならない同様の問題には、「 Households 」機能が含まれます。 Amazonでは、アカウントに参加して、Amazon Primeのいくつかの特典(2日間の無料配送など)を共有できます。意図は、家計が一度だけPrimeを購入する必要があることですが、これは明らかに人々が友達とアカウントに参加し、Primeのコストを分割できるという乱用の可能性があります。
Amazonは、支払い方法を共有アカウントの一部にすることでこの問題を軽減しています。そのため、「世帯」に参加している人は誰でもあなたの支払い方法を確認して使用できます。これがなければ、カジュアルな友達とアカウントを共有したくなるかもしれませんが、支払い方法が共有されるようになったので、私は誰とそれを共有するかについて、突然非常にうるさくなっています!
IP範囲をお勧めします。これにより、アカウント共有に対する十分な保護が提供されますが、IPの変更は許可されます。
問題のユーザーの有効なIP範囲は、WHOISへの自動ルックアップによって決定できます。 (実際には、WHOISは自動検索を可能にするように設計されています)。次に、94.254.51.234のようなIPを要求し、94.254.0.0-94.254.127.255のような応答を返すことができます。次に、エントリ "94.254.0.0-94.254.127.255"を認証データベースに追加します。
これは、ユーザーが「許可されていない」デバイスからログインするたびに行う必要があり、許可されたデバイスの数は2未満です。
さらに、学校のコンピュータからのログインを「常に無料」にすることができます。たとえば、認証に影響を与える必要はありません。
これにより、ユーザーがクライアントコンピューターで何をしても(Cookieのクリアなど)問題にならないようにシステムが作成され、特定の家(タブレット、PC、モバイルなど)の無制限のデバイスからユーザーがログインできるようになります)。
ユーザーは通常、自宅、携帯電話、学校からログインするため、2つのIP範囲の制限はかなり良好です。その場合、家庭とモバイルは「オーホライズド」デバイスになり、学校は「無料」のデバイスになります。
別の方法は、ユーザーにYubico U2Fトークン(これらはYubicoで18ドルで販売されています)を与えることです。これは、ユーザー名/パスワードを置き換えるものです。トークンは1つしか取得できません。新しいトークンを登録すると、50ドルほどの費用がかかります。その後、電話でユーザー名/パスワードを共有するよりも、アクセスを共有するほうがはるかに困難になります。 IP範囲の制限と組み合わせると、アクセスの共有が非常に困難になります。
編集:要するに、あなたの解決策は悪いです。これが代替案です。
...
私がこれを理解しているように、これは珍しい方法で提示される一般的な問題です。
多要素認証?あなたは彼らに定期的なログインを与え、彼らがログインしようとするとき、彼らが入力しなければならないランダムな5桁(または何でも)のコードを含むテキストを彼らに送ります。
これは、その人をログインするときに2つの要素が考慮されることを意味します。
これが機密情報を含む可能性がある学校であることを考えると、この種のアプローチは全面的に使用する必要があります(学校の共有ドライブには写真などが含まれていることが多いため)。
このアプローチは、SMS APIを介して実装するのがかなり簡単です。
注:さらに、確認の電子メールリンクが機能する可能性があります-痛みですが、ここでは子供のセキュリティを優先する場合は、このルートを使用してもかまいません。
多くの企業は、ユーザーが資格情報の入力中にサインインするために使用される事前登録された電話番号でSMSコードを取得する2要素認証アプローチを採用しています。
これはセキュリティ対策ですが、複数のユーザーと資格情報を共有することが(不可能ではないにしても)困難になるという副作用があります。また、ユーザーがサイトにログインする頻度に応じて、このセッションの有効期限を数時間ごとに追加します。
Cookieを使用して、ユーザーが複数のセッションに同時にログインしているかどうかを確認することもできます。これは、ユーザーが自分の資格情報を共有していることを意味します。
これは明らかに問題の完全な解決策ではありませんが、複数のユーザー間で資格情報を再利用することを困難にするために適用できる実行可能な解決策です。
生体認証を使用してログインできるシステムを開発できます。例えば。 Webカメラを使用して写真を撮ることができ、ソフトウェアは、同じ人物のデータからデータを抽出します。このデータは、数年程度の時間スケールで変化しません。