PHPz2017-04-18 10:47:05
バックエンドが分散している場合 (クラウド サーバーなど)、開発のみであれば、oauth2.0 のトークン検証方法を使用することをお勧めします。
oauth ログインプロセスは次のとおりです:
フィールド token、user_id、login_at、expire_at を含む新しいトークン テーブルを作成します
ユーザーは自分のアカウントとパスワードを使用してログインします
ログインが成功すると、レコードがデータテーブルトークンに挿入され、ユーザーの以前のすべてのトークンが削除されるか期限切れに設定され、トークンがフロントエンドに返されます
フロントエンドでajaxを使用する場合はヘッダーを追加しますAuthorization=token
バックエンドはリクエストヘッダーの認証を読み取り、それが存在し期限切れでない場合は正当なユーザーとみなされ、それ以外の場合はエラーが返されます
PHP中文网2017-04-18 10:47:05
1 ユーザーのログインは、サーバーが異なる場合でも、通常、Cookie + セッションになります。同一オリジン ポリシーの制限により、Cookie を使用してアクセスすることはできません。別のドメイン名。
2 通常、フロントエンドにはデータの概要を生成するための集計関数があり、データと一緒に投稿されますが、バックエンドは同じ集計関数を使用して投稿されたデータの概要を生成し、比較します。投稿データの概要と一致している場合 データが改変されていないことを証明します。ただし、ユーザーがどのような集計機能を使用しているかを知っていれば、データの集計を作成して投稿することができるため、理論的には判断することはできませんが、実際には一般のユーザーはこれを知りません。
高洛峰2017-04-18 10:47:05
JWT
、json Web トークン。
データが変更されたかどうかをバックエンドはどのように判断するのでしょうか?それは、バックエンド データベースにデータが保存されないことを意味しますか?
怪我咯2017-04-18 10:47:05
バックエンドデータ検証。これは、フロントエンドとバックエンドが分離されている場合のデータセキュリティのために必要です。
通常の方法はサイン暗号化を行うことです
使用する必要があるのはキーとシークレットです
例えばタオバオAPIタオバオサインの暗号化方法
key はユーザー ID、name はあなた自身、secret はキーを表します。キーはサーバーによって生成され、データ送信中に Sercet 情報を含めることができないクライアントを暗号化する場合にのみ使用できます。
クライアントが特定のルールに従ってすべてのリクエストデータを暗号化した後、バックエンドは送信されたデータを取得して同じ方法で暗号化し、署名パラメータを比較して一貫性があるかどうかを確認します。一貫性がある場合は、データが一致していることを意味します。送信プロセス中に改ざんされていないこと。
さらに、タイムスタンプ パラメーターなどの適時性の検出も必要です。これには、時間エラーが前後 5 分を超えないようにする必要があります。
もう 1 つのポイントは、データが繰り返しリクエストされた場合、バックエンドが保存するキャッシュを作成することです。サインを受け取った後のサイン、有効期限は 5 分 (上記の時間に相当)、同じサインは、このリクエストが繰り返しリクエストされ、その後拒否されたことを意味します
基本的に、これはデータのセキュリティ、適時性、重複防止などを確保するためのプロセスです。
ringa_lee2017-04-18 10:47:05
sessionStorage または localStorage は、バックグラウンド自体によって生成された特別なパスワードを保存します。各リクエストはヘッドを介して実行され、データはバックグラウンドで正当であることが検証されます