セキュリティ考慮事項
意図しない書面への署名
攻撃者は正当なフローからリダイレクト URL redirect_url
を入手し、不正な経路(攻撃者が用意した Web サイトや、SNS 等)により被害者にアクセスさせることができます。
このシナリオにおいて、被害者は攻撃者が指定した書面等に意図せず署名させられる可能性があります。
この問題は、rpc CreateSession
のリクエスト時に指定できる metadata
パラメータにランダムかつ再利用されないな文字列 nonce
を指定することで回避できます。
nonce
は、身元確認の流れにおけるステップ 2 までに、ユーザーのブラウザセッションと紐つけて保持しておく必要があります。例えば、Cookie に保存するなどの方法が考えられます。
最終的に rpc FinalizeSession
を呼び出すとき、ユーザーのブラウザセッションに紐付けられた nonce
と API レスポンスの metadata
を比較し、一致しなければエラーとする必要があります。
nonce
の検証に失敗した場合、当該書面やそれに関連するデータは不正に作成された可能性があるため、直ちに削除することを推奨します。
この問題は、署名セッションの有効期限を短く設定することでもある程度は軽減可能であると考えられますが、この方法は完全ではなく、nonce
の検証を行うことを推奨します。
意図しない書面での手続きの進行
攻撃者は正当なフローからコールバック URL callback_url
を入手し、不正な経路(攻撃者が用意した Web サイトや、SNS 等)により被害者にアクセスさせることができます。
このシナリオにおいて、被害者は攻撃者が署名した書面を以て、意図せず手続きを進行させられる可能性があります。
この問題は、意図しない書面への署名と同様の方法によって回避できます。
書面の流出
署名セッション ID は、これを以て署名対象の書面を確認することができるため、セッションの有効期限内においては、署名要求対象者以外に開示されることは好ましくありません。
署名セッション ID や、これを包含するリダイレクト URL redirect_url
は、TLS 等の盗聴に耐性のある通信経路を用いて送信することを推奨します。
なお、PocketSign Stamp および PocketSign Verify が提供する API 等は、必ず TLS を用いて通信します。
API トークンの管理
API の利用開始で取得した API トークンは、サーバサイドで利用されることを想定しており、クライアントサイドには公開されないようにしてください。
API トークンが漏洩した場合、第三者によって事業者の名前を騙った不正な署名要求の作成が行われる可能性があ ります。