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

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

ただいまの
回答率

90.51%

  • JavaScript

    16428questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Webサイト

    1078questions

    一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

  • Perl

    457questions

    Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

CGIでクライアントを識別する方法

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 901

ProgPi

score 12

初めて質問させていただきます。

私は趣味で多人数で遊べるブラウザCGIゲームを作っています。
言語はPerlで記載しています。

ずいぶん前から問題になっているのがユーザの多重登録という問題です。
このゲームの前提として、登録は1ユーザにつき1つまでなのですが
1ユーザが複数登録して不正をする方がたえません。
以前まではIPアドレスやメールアドレス、UserAgent等をチェックして
ユーザが多重で登録していないか確認していたのですが、
フリーメールが簡単に取得できるようになったこと、
PC以外にスマホ2台~3台つかって登録できること、
UserAgentは偽装できること
などから、なにか良い多重チェック方法がないか調べています。

JavascriptでクライアントのMACアドレスを取得して、
それをサーバに送信し多重チェックにつかえないものかと
調査していましたが、JavascriptでMACアドレスの取得はできない
ようでした。

クライアントが簡単に偽装できず
クライアントを識別する良い方法はないでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+2

個人でやるのは実質難しいですが・・・

1.SMS認証 - 複数台持ってる人への対応ができないので、それは諦める
2.クレカ認証 - 複数枚持ってる人への対応ができないので、それは諦める
3.写真付き公的証明書画像アップロードによる本人認証 - ほぼほぼ確実に対応可能だが、個人運用のサイトに写真付きの公的証明書画像のアップロードはほとんどのユーザーが実施しない

一部の利用者に不便をかける可能性はありますが、キャリアメールのみ登録可能とし、メール認証するのはどうでしょうか。

あとは・・・複数アカウントを登録することでゲームを優位に進める仕様を見直すくらいしか思いつきません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/13 15:29

    早速のご回答ありがとうございました。
    キャリアのメール認証も考えましたが、スマホ2台持ちもそれほど珍しくなくなってしまった今となっては、あまり有効な手段ではないのかと考えておりました。
    「複数アカウントを登録することでゲームを優位に進める仕様を見直す」に関しては、まだ検討の余地もありそうなので考えてみることにします。
    ありがとうございました。

    キャンセル

checkベストアンサー

+1

1.電話番号(SMS)で登録・認証する
登録時に電話番号を必須とし、SMSでその電話番号宛にワンタイムキーを送付。そのワンタイムキーを入力する事で登録完了とする。
電話番号の取得にお金がかかる事で、一定の抑制にはなると思いますが、私もSMS可能なSIMを3枚持っていたりするので、そういう方には厳密に1アカウントとは出来ない欠点もあります。
あと、SMSを送信するのに外部の有料サービス利用が必要だったり

2.Fingerprintで認証する
https://www.saitolab.org/fp_site/
アクセスしている端末の解像度やブラウザやプラグイン等いろんな情報を収集し、それらが他人の端末と完全に一致するケースはほぼないだろうという事から使われる技術で、一部では実サービス上で利用されていたりします。
私も一時期導入を検討しましたが、私の技術力では欲しいレベルの精度での個の特定が出来ず、断念しました。
PCならかなり精度高く特定出来るのですが、iPhoneとか、多く流通しててその多くがデフォルト設定で使われているような端末があると、なかなか難しいところがありました。

3.登録時には諦めて、遊ぶ時に多アカウント使っていないかチェックする
Cookie等簡単な方法でいいので、ゲーム中に毎回多アカウントでログインしていないか確認し、多アカウントを使っていたらゲームさせないorアカウント凍結するなど。
回避方法としては、毎回ゲームログイン前にCookieを削除するなどする事で可能ですが、毎回毎回そんな手間がかかると諦めるのでは。

完全に特定するのは、なかなかむずかしいのでは。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/13 15:35

    ご回答ありがとうございました。
    やはり完全に特定するのは難しいのですね。
    ご回答にありましたFingerprintに関しては、非常に勉強になりました。
    当初はプログラムによる識別と多重判定の自動化を目指しておりましたが
    2、3の組み合わせで、人間による多重判定の手助けになる管理ツールを
    作る方向で一度検討してみたいと思います。
    ありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    16428questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Webサイト

    1078questions

    一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

  • Perl

    457questions

    Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。