閲覧いただきありがとうございます。
現在、PHPを用いて契約書を作成し、契約相手と共有できるWebアプリを開発しています。
設計はある程度まとまっているのですが、どのように実装したらよいのか見当がつかず、質問させていただきます。
説明のために、Aさんという人が作った契約書をBさんに送りたい(共有したい)という状況を考えます。まず、ユーザー登録を済ませたAさんは、文書を作成し、phpmyadminでDBに保存します。その後、AさんはBさんのemailアドレスを入力します。
これにより、Aさんが文書を作りそれをBさんに見て欲しいという旨のメールを、サーバーが送信します。
Bさんは、このメールを開封し、そこに添付されている暗号化されたURLを確認し、そこからWebアプリのユーザー登録もしくはログイン画面に遷移します。
そしてユーザー登録もしくはログインがなされたとき、BさんはAさんが送った文書を確認することができるという仕様です。
このとき、Bさんがメールに気づかずに、Webアプリのユーザー登録もしくはログインによってマイページを見たとしても、それだけではAさんの文書を見ることはできません。
あくまでメールのURLを踏んでもらうことが、セキュリティ対策につながると考えています。
DBを画像のように設計しました。BさんがメールのURLからユーザー登録orログインしたときのみ、recieve_flgをtrueにすればよいと考えています。
質問ですが、まずこの方法は安全でしょうか?
また、どのようにURLを暗号化したらよいでしょうか?
つまり、contract_idとmaker_idとsend_to_emailを含んでいるが、第3者には解読できない、かつそのURLでWebアプリのユーザー登録かログイン画面に遷移できる、URLをPHPで作成するにはどうしたらよいでしょうか?
また、作成したURLをどのように解読すればよいでしょうか?
一応、こちらの記事が参考になるかと考えています。
ハッシュ(HMAC)を使って有効期限付きURL/URIを作る方法
勉強不足でどのように実装したらよいのか見当が付きません。方針だけでも教えていただけると、幸いです。
よろしくお願いします。