java - 画像検証コードの実装原理
怪我咯
怪我咯 2017-05-27 17:41:18
0
4
1011

**テスト Web サイト:
http://con.monyun.cn:9960/acc...

このページには確認コードがあります。この確認コードの URL は

です

<img src="../aut_checkCode.hts?=0.8963835985936632" class="icd">

認証コードをクリックしたときに表示される画像を変更するにはどうすればよいですか? ?

手順:
(1) 認証コード画像をクリックすると、img タグの src 属性の末尾の数字が変わります。数字が変わると、ブラウザは新しいコードにアクセスします。データ取得用URL

(2) 新しいURLのクエリ文字列には値のみがあり、名前はありませんが、サーバー側ではこの数値を取得できないということでしょうか?
0.8963835985936632

サーバー側でこの数値を取得する方法はありますか? ?

(3) 数値を取得する方法がない場合。サーバー側はリクエストを処理し、バイナリ画像データを返します。
現時点で画像のトークンは生成されますか?生成された場合、それをクライアントに渡すにはどうすればよいでしょうか?

(4) ユーザーは確認コードを送信します。サーバー側の処理では、ユーザーが送信した検証コードが正しいかどうかをどのように検証するのでしょうか?
サーバーはどのようにして Redis から正しい確認コードを取得できますか?

それについて話しましょう
返事をください! **

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(4)
Ty80

ご招待いただきありがとうございます。一般的に、確認コードの作業手順は次のとおりです。

  1. 実際には、サーバーは 4 桁の文字列を生成し、この 4 桁の文字列を使用して画像を生成し、

    .response中, 返回给浏览器, 并把这个4位字符串存在了当前session

    に書き込みます。
  2. ブラウザが送信した後、送信された文字列と

    の文字列を比較して、確認コードを完成させます。session

使用しない場合

たとえば、次のように cookie に設定できます (key=test, value=test):session比如可以设置到cookie中如下(key=test, value=test

いいねを押す +0
淡淡烟草味

1. 以下の数値の変更は、ブラウザーのキャッシュの問題を回避するためです。
2. サーバーは、時刻ファイルに従って検証コードを自動的に生成します。 )

3. 検証コードの原理は、最初に乱数の文字列を生成してセッションに保存し、最後に画像を生成してクライアントに送信して識別することです。サーバーはあなたの答えをセッション内の乱数と比較します。これは検証が成功したことを意味します。

4.いいね3

5. Redis で使用する場合は、次のキーのように、認証コードがどのユーザーに属しているかを識別できるように、通常、トークンまたはセッションが使用されます。 リーリー

疑似コード

確認コードを取得する

リーリー

確認する

リーリー
いいねを押す +0
为情所困

最初の 1 つ目: 確認コードの一般的なプロセスは、説明したものと同じです。

2 つ目:
確認コードを生成するには、バックグラウンドに値を渡す必要はありません。
指定した例では、最後の数値文字列の変更は、実際には URL を再リクエストすることです。通常、画像のリンクは検証コードを生成するリンクを指します。クリック後に js を使用して接続を変更します。つまり、src の背後の接続が変更されたことをブラウザーが検出できるように、その後に乱数の文字列を追加します。ランダムな文字列の文字列がこれに使用されます)、その後、新しい生成された検証コード イメージを取得するためにバックグラウンドを再度要求します。

3 つ目:

バイナリ イメージがバックグラウンドで返された後は、トークンを生成する必要はありませんが、検証コードの生成に使用される数字の文字列をセッションに保存する必要があります。サーバー側に保存しておけば安全であり、クライアントに返す必要はありません。

4 番目:

ユーザーが送信された確認コードを入力した後、ユーザーが送信した確認コード番号をサーバー セッションの番号と比較します。 それらが同じであれば、検証は成功します。

最終的に確認コードを Redis に入れることに関しては、セッションを Redis に保存する方法に関する関連情報を検索できます。

いいねを押す +0
Ty80

背景コードは一般的に次のとおりです

public void genAuthImage(){

//トークン uuid を生成します
//Cookie を書き込みます
response.addCookie();--->実際に set-cookie ヘッダー情報を設定します

//画像を生成し、response を使用して書き出す
end
}
フロントエンド:

フロントエンド:

クロームチェック

コンソール

結論は不確か: レスポンスタイプがimage/jpgの場合、Cookieは設定できません。
見た人ならその理由を説明できる

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!