Features
TagFormでできること
NFCタグ・セッション管理・UUIDトークンを組み合わせた3層の防衛ラインにより、
技術的に不正な出席登録を遮断します。
防げる不正の種類
従来の出席管理が抱える3つの課題を、TagFormは技術的に解決します
URLの外部流出
フォームのURLをSNSやLINEで共有され、教室外の人間が提出する。
URLに加えてセッションID・UUIDの3点照合。NFCタグをタップした端末以外ではURLが無効になります。
代返(なりすまし提出)
友人の分の出席情報を出すために何度もNFCタグを読み込んで代わりに提出する。
同一のタグIDで同一のフォームIDの提出は1回しか受け付けません。また、セッションやUUIDの情報も合わせるので、複数タグを読み込んだとしても同一端末からは1回しか提出できません。
時間外・場所外の提出
授業時間外や別の教室から出席を登録する
受付時間帯の設定や、トークン及びセッションの有効期限切れにより、都度NFCタグを読み込まないとフォームが開けない設定になっています。
Demo
実際の挙動
不正を試みると何が起きるか。
実際の画面でブロックされる瞬間をご覧ください。
URLの外部流出
フォームURLを第三者に共有されても、セッションIDとUUIDが一致しない端末からのアクセスはブロックされます。
代返(なりすまし提出)
同一NFCタグを複数回タップしても、トークンの使用回数制限(最大2回)により2回目以降の提出はブロックされます。
複数タグの不正読み取り
複数のNFCタグを連続して読み取っても、トークンはタグごとに独立して管理されるため多重提出は成立しません。
▲ 上記はすべて実際のTagForm上での動作です
技術的な仕組み
NFCタップから提出完了まで、すべてのステップで検証が走ります
ランダムトークン・UUID・セッションIDを生成し NFCタグのタグIDも紐づけて保存
トークン・セッションID・UUID・タグIDの4点照合。すべてが一致する場合のみ画面を表示
教員が学生に口頭で伝えるフォームIDを入力。即時検証しフォーム名を表示
トークン有効回数を1減らす(2→1)。再度の4点照合を実施
トークン有効回数を0にリセット。フォーム回答を保存。以降そのトークンは使用不可
TagFormはURLに含まれるトークン値だけでなく、セッションIDとUUID、タグIDの4つを同時に照合します。 URLが流出しても、セッションとUUID、タグIDが一致しない限りフォームにアクセスできません。
AttendanceToken::where('token', $token)
->where('session_id', $request->session()->getId())
->where('uuid', $request->session()->get('uuid'))
->where('tag_id', $request->input('tag_id'))
->where('expires_at', '>', Carbon::now())
その他の機能
短文・長文・ラジオボタン・チェックボックスの4種類の設問をドラッグ&ドロップで自由に作成できます。
授業開始・終了時刻を設定しておけば、時間帯外の提出を自動で拒否します。
NFCタグのroom_id・seat_idが回答と一緒に保存され、どの席からの提出かが一目でわかります。
Pusherを利用したリアルタイム通知で、学生の提出状況を即座に把握できます。
「月曜2限」などの講義単位でフォームを管理。科目ごとに出席データを整理できます。
授業前後にワンクリックで受付中/受付不可を切り替え。学生への開放・締め切りが簡単です。
研究・論文資料
TagFormの設計思想・有効性に関する研究資料
論文・研究資料(準備中)
TagFormの不正防止効果の有効性に関する研究論文および技術資料を掲載予定です。
準備が整い次第、こちらでPDFをご覧いただけます。
まずはフォーム作成から
NFCタグ導入済み施設の方は
新規アカウント登録