質問: 初めて質問させていただきます。 私は趣味で多人数で遊べるブラウザCGIゲームを作っています。 言語はPerlで記載しています。 ずいぶん前から問題になっているのがユーザの多重登録という問題です。 このゲームの前提として、登録は1ユーザにつき1つまでなのですが 1ユーザが複数登録して不正をする方がたえません。 以前まではIPアドレスやメールアドレス、UserAgent等をチェックして ユーザが多重で登録していないか確認していたのですが、 フリーメールが簡単に取得できるようになったこと、 PC以外にスマホ2台~3台つかって登録できること、 UserAgentは偽装できること などから、なにか良い多重チェック方法がないか調べています。 JavascriptでクライアントのMACアドレスを取得して、 それをサーバに送信し多重チェックにつかえないものかと 調査していましたが、JavascriptでMACアドレスの取得はできない ようでした。 クライアントが簡単に偽装できず クライアントを識別する良い方法はないでしょうか?
回答: 1.電話番号(SMS)で登録・認証する 登録時に電話番号を必須とし、SMSでその電話番号宛にワンタイムキーを送付。そのワンタイムキーを入力する事で登録完了とする。 電話番号の取得にお金がかかる事で、一定の抑制にはなると思いますが、私もSMS可能なSIMを3枚持っていたりするので、そういう方には厳密に1アカウントとは出来ない欠点もあります。 あと、SMSを送信するのに外部の有料サービス利用が必要だったり 2.Fingerprintで認証する https://www.saitolab.org/fp_site/ アクセスしている端末の解像度やブラウザやプラグイン等いろんな情報を収集し、それらが他人の端末と完全に一致するケースはほぼないだろうという事から使われる技術で、一部では実サービス上で利用されていたりします。 私も一時期導入を検討しましたが、私の技術力では欲しいレベルの精度での個の特定が出来ず、断念しました。 PCならかなり精度高く特定出来るのですが、iPhoneとか、多く流通しててその多くがデフォルト設定で使われているような端末があると、なかなか難しいところがありました。 3.登録時には諦めて、遊ぶ時に多アカウント使っていないかチェックする Cookie等簡単な方法でいいので、ゲーム中に毎回多アカウントでログインしていないか確認し、多アカウントを使っていたらゲームさせないorアカウント凍結するなど。 回避方法としては、毎回ゲームログイン前にCookieを削除するなどする事で可能ですが、毎回毎回そんな手間がかかると諦めるのでは。 完全に特定するのは、なかなかむずかしいのでは。