質問: ユーザーが自分のアカウントの外部でデータを共有できるようにし、データを表示するために関連するURLパラメーターを使用して一意のURLを本質的に生成する概念実証をまとめたいと思います。 明らかに、通常のURLを使用すると、パラメーターを変更したり、クエリを変更したり、必要なデータを抽出したりできます。したがって、これにより、ユーザーがデータを共有するためのリンクを生成するときに、パラメーターを取得し、複雑なソルトを追加し、結合された文字列`(sha-2)`をハッシュして、それをキーとして使用します。したがって、URLは次のようになります。 `mydomain.com/app/shared.php?function=form&account=1&form=a19481e78dd87f5eb04afe94c85ea4f3&key=7dcaa38baa19e0f70262d8775582300346f5c544` URLが入力されると、サーバーはパラメーターとシークレットソルトを再コンパイルし、キーを検証します。キーが無効な場合、データは表示されません。 パラメータをDBに格納することでこれをさらに保護することを考えたので、URLは`mydomain.com/app/h6Hs52ff2a`ように見え、パラメータがURLに直接含まれることはありませんが、同様に、共有可能なURLを生成するというアイデアも非常に気に入っています。 DBバックエンドなしで飛行します。 上記のアプローチは少し憤慨しているように感じますが、サーバーに保存されているソルト(それ自体が複雑)を知らない限り、そのようなシステムをバイパスする方法はわかりません。 考えは大歓迎です。
回答: ### 答え : #### 解決: 安心が必要な場合は、リンクを使用してドキュメントを共有するときにGoogleドライブで採用されているのと同じ概念です。 いくつかのコメント: * 共有リンクの読みやすさ。共有データが常にほぼ同じ種類のモデル(アカウントデータなど)である場合、リンクはOKです。ただし、ユーザーの詳細など、他の種類のデータを共有できる場合は、共有リンクを取得する人がリンクを理解できるように、そのデータをURLに含めます。 * セキュリティの強化に関心がある場合は、ユーザーごとにキーを適用できます。ユーザーごとにデータベースにキーを保持する必要があります。 * URLを生成するときに、有効期限パラメーターとハッシュを追加します。ハッシュされたリンクを読み取ると、リンクの有効期限が切れているかどうかを確認できます。 * 必ずURLセーフ文字を使用してください