協力会社がアカウントなしで日報アプリに入力するには?署名付きリンクの安全性と限界を試作で確かめた

協力会社や一人親方がアカウントなしで日報を出すには、現場と人ごとに推測できない期限つきのリンク(署名付きURL)を送ります。職人はアプリを入れずにタップするだけで日報と出面を入力でき、ID数で利用料は増えません。現場のまどで試作したところ、書き換え・期限切れ・取り消し後の送信はすべて断れました。ただし転送されたリンクは、端末に結びつけないと止まりません。(2026年10月時点)
全体の流れと費用は現場管理アプリの独自開発のページにまとめています。
要点
- 協力会社の日報は、現場と人ごとの署名付きリンクを送れば、アカウントなしで受け取れます。
- 協力会社40人にB社のIDを配ると、ゲストで年45.6万円(ライト)か90.7万円、全員を通常ユーザーにすると年108万円です(計算値)。
- 7通りの送信テストで、書き換え・期限切れ・取り消し後など4通りは2方式とも拒否しました。
- 転送されたリンクは署名だけでは止まらず、最初に開いた端末に結びつけると403で断れました。
目次
協力会社がアカウントなしで日報を出すには、どうしますか?
現場と人ごとに、推測できない期限つきのリンク(署名付きURL)を作って送ります。職人がリンクをタップすると、名前と現場を入れ済みの入力画面が開きます。そこから出面(その日に入った人数)と日報を送れます。ID・パスワードは要りません。
協力会社の入力の受け方は、大きく3つあります。リンク入力のほかとの違いは2つです。ID数で利用料が増えないことと、職人に覚えてもらうことがないことです。
| 受け方 | 職人がすること | 協力会社の人数で増える費用 | 気をつけること |
|---|---|---|---|
| 1人1つのIDを配る | ID・パスワードでログイン | ID 1つごとの月額 | 忘れたパスワードの再発行 |
| ゲスト用のIDを配る | 招待を受けてログイン | ゲスト1人ごとの月額 | 招待と削除の手間 |
| 署名付きリンクを送る | 届いたリンクをタップ | 0円 | 転送と期限切れ |
私が仕組みを作るときは、リンクの中に現場ID・人ID・期限・取り消し番号を入れ、サーバーだけが持つ鍵で署名します。誰が送った日報かはリンクで決まるので、職人に名前を選ばせる欄も作りません。
協力会社40人にIDを配ると、1年でいくらかかりますか?
料金を公開している業務アプリ作成サービス(B社)の公式単価で、社員10人と協力会社40人の分を安い順に計算しました(税抜)。いちばん安いライトのまま協力会社をゲストにすると年45万6,000円、スタンダードで協力会社をゲストにすると年90万7,200円、全員をスタンダードの通常ユーザーにすると年108万円です。全員をライトの通常ユーザーにすると年60万円です。
単価はB社の公式の料金ページ(2026年10月16日に確認)の値です。ライトは1ユーザー月1,000円、スタンダードは月1,800円で、どちらも最低10ユーザーから契約します。社外の人を招くゲストは、ライトなら1人月700円、スタンダードなら月1,440円です(いずれも税抜)。ライトは外部サービスとの連携や拡張機能が使えません。
IDを配らずに受け取るだけなら、ほかの手もあります。無料のフォームサービス(C社)はログイン不要の設定にでき、無料で入力を集められます。違いが出るのは受け取ったあとで、手配との突き合わせ、取り消し、出面の集計を自分で組むかどうかです。
| 協力会社の人数 | ライトで協力会社をゲスト(円/年) | スタンダードで協力会社をゲスト(円/年) | 全員をスタンダードの通常ユーザー(円/年) | 協力会社はリンク、社員10人はスタンダード(円/年) |
|---|---|---|---|---|
| 10人 | 204,000 | 388,800 | 432,000 | 216,000 |
| 20人 | 288,000 | 561,600 | 648,000 | 216,000 |
| 40人 | 456,000 | 907,200 | 1,080,000 | 216,000 |
| 60人 | 624,000 | 1,252,800 | 1,512,000 | 216,000 |
計算は実験の台本とデータ(zip)の link_token.py にある yearly() です。式は「(社員+協力会社)×1,800円×12か月」で、ゲストは「社員分+協力会社×ゲストの単価×12か月」です。無料のフォームで受けるなら、利用料は0円です。表に入れていないのは、リンク入力の仕組みを作る費用です。現場のまどでは一式30万円〜で、何年でID課金の合計を下回るかは計算機で比べられます。
署名付きリンクは、なぜ他人に書き換えられないのですか?
リンクの末尾に、サーバーだけが持つ鍵で計算した署名が付いているからです。現場IDを1文字でも書き換えると署名が合わなくなり、サーバーは保存しません。
試作では、HMAC-SHA256という方式で署名を作り、先頭128ビットをリンクに入れました。リンクの長さは76文字です。
OWASPは、Webの安全性を扱う国際的な非営利団体です。ログイン状態を表す識別子について、Session Management Cheat Sheetで64ビット以上の推測しにくさを求めています。128ビットはその2倍の長さです。当てずっぽうで正しい署名を作れる見込みは、まずありません。
payload = b64(f'{site}|{person}|{exp}|{ver}'.encode()) # 現場・人・期限・取り消し番号
sig = b64(hmac.new(KEY, payload.encode(), hashlib.sha256).digest()[:16])
link = f'/r/{payload}.{sig}'
# 受け取ったら同じ計算をして、署名・期限・取り消し番号の3つを確かめる
取り消し番号は、人ごとに1つ持たせる数です。事務所で番号を1つ上げると、その人に送った古いリンクは全部通らなくなります。リンクを1本ずつ探して消す必要はありません。
署名付きリンクは、転送や期限切れのときにどう動きますか?
手元のHTTPサーバーで7通りの送信を試しました。書き換え・当てずっぽうの署名・期限切れ・取り消し後の4通りは、どちらの方式でも403(拒否)を返しました。転送された別の端末からの送信は、署名だけの方式Aでは受け付けてしまいました。
方式Bは、最初にリンクを開いた端末に目印のCookieを渡し、2台目の端末からは入力させない方式です。方式Bでは、転送された送信も403で断れました。
同じzipの link_token.py を python link_token.py で動かすと、同じ7通りを試せます。鍵は起動のたびに作り直します。試していないこともあります。本物のスマホのブラウザでCookieを消した場合や、職人が機種変更した場合は、方式Bでは本人も入力できなくなります。そのときは事務所でリンクを作り直して送ります。
リンク入力の限界と、別の方法が合う場合は?
リンクは「持っている人が本人」とみなす仕組みなので、URLが漏れると、その間は他人でも入力できてしまいます。期限・取り消し・端末への結びつけで、その間を短くするのが対策です。
OWASPは「Information exposure through query strings in URL」で、URLに入れた値が漏れる場所を挙げています。Refererヘッダー、サーバーのログ、閲覧履歴、ブラウザのキャッシュ、のぞき見です。HTTPSにしても防げないとしています。
試作では、入力画面に Referrer-Policy: no-referrer を付けました。ほかのサイトへ移っても、URLが相手に送られません。入力画面には外部の画像やリンクを置かず、期限は7日に区切っています。
次のような場合は、IDとパスワードで入る画面を別に作るほうが合います。
- 図面や見積など、協力会社に見せたくない情報を表示する
- 1台のスマホを班の何人かで使い回している
- 協力会社の側で、過去の日報を何か月分も見返したい
日報と出面を受け取るだけならリンクで足ります。見せる情報が増えるほど、IDで入る画面を併用する理由が増えます。電波の届かない現場の扱いは、現場の日報はオフラインで入力できる?圏外で30回試したに件数を載せています。
現場管理アプリを自社専用に作る費用と、ID課金のサービスとの5年総額の比べ方は、現場管理アプリの費用にまとめています。
このサイトで相談するには?
協力会社にIDを配らずに日報を集めたい、という段階のご相談でも構いません。
現場のまどでは、何をどう頼むか決まっていなくても大丈夫です。御社のやり方に合わせて、進め方を一緒に考えます。準備は要りません。無料で相談するからお送りください。
よくある質問
- 職人のスマホにアプリを入れてもらう必要はありますか?
- いいえ。リンクはスマホのブラウザで開くので、アプリのインストールもパスワードの設定も要りません。
- リンクを送るのはLINEでもよいですか?
- はい。SMSでもLINEでも送れます。ただしURLはトーク履歴に残るので、期限を7日などに区切り、使い終えたら取り消します。
- 協力会社の職人が辞めたら、どうしますか?
- その人の取り消し番号を1つ上げます。古いリンクは全部その場で通らなくなり、試作でも403で断りました。
- 図面や工程表もリンクで見せられますか?
- 見せられますが、他社に見せたくない情報が載るなら、IDとパスワードで入る画面に分けるのが安全です。
出典
- B社(業務アプリ作成サービス)の公式の料金ページ(ライト 1,000円・スタンダード 1,800円/ユーザー/月・最低10ユーザー、ゲストはライト 700円・スタンダード 1,440円/ユーザー/月、税抜。社名は伏せています)(2026年10月16日確認)
- 現場のまど 署名付きリンクの試作と年額の計算(実験の台本とデータのzipの link_token.py)、2026-10-16(2026年10月16日確認)
- OWASP「Information exposure through query strings in URL」(URLの値が漏れる場所)(2026年10月16日確認)
- OWASP Cheat Sheet Series「Session Management Cheat Sheet」(識別子は64ビット以上のエントロピー)(2026年10月16日確認)
- MDN Web Docs「Referrer-Policy」(no-referrer で Referer ヘッダーを送らない)(2026年10月16日確認)


