私は簡単なウェブサイトを作るために春のブート、春のmvcと春のセキュリティを使用しています。ログインページで、私は覚えて私のチェックボックスがあります。チェックしてログインすると、ブラウザ用のRemember-Me Cookieが作成されます。私はchromeとfirefoxの両方を試しました。春のセキュリティ私のクッキーを覚えているユニコード文字が間違っている
クッキーは以下のとおりです。
Name: remember-me
Content: Pz8/Pz8/OjE0NjQ5ODcxMjQxMDk6YTc1MDMzNTM0ZmNhNjc3YmUwOTljZGNjN2EyYTk1NjM
Domain: localhost
Path: /gy
Send For: Any kind of connection
Accessible to Script: No (HttpOnly)
Created: Friday, 20 May 2016 at 21:52:04
Expires: Friday, 3 June 2016 at 21:52:04
上記の内容はbase64形式です。デコードされた文字列は以下の通りです。
??????:1464987124109:a75033534fca677be099cdcc7a2a9563
最初の部分は漢字ですが、として示されたユーザー名です??????。
私は、Unicode文字をクッキーに保存することを知っています。URLEncoderクラスを使用して最初にエンコードし、読み込んだ後にデコードする必要があります。私はJavaとSpringが初めてのので、Unicode文字を処理するためにcookie cookieをカスタマイズする方法は知られていません。
問題を解決する手掛かりはありがたいです。ありがとう!
あなたの偉大な答えに感謝します。セキュリティは、ユーザーの利便性と比較して、このWebアプリケーションにとって大きな懸念事項ではありません。あなたが提案したように、私は間違いなくエンタープライズウェブサイトでこの機能を使用しません。 Springチームがこのバグを修正する前に、この問題を回避する方法はありますか?すなわち、私がユニコードで働くことを覚えていますか? – weijun
サーバー上のデフォルトのエンコーディングをUTF-8に設定して、すべての文字にアクセスできるようにすることができます。これは、 '-Dfile.encoding = UTF8'をオプションとしてJavaランタイムに渡すことによって行うことができます。どのコンテナ/ OSを使用しているかによって、どれくらい正確に設定できますか? – bobince
私のdev PCでデフォルトのエンコーディングをUTF-8に変更しました。意外にも、私のLinuxサーバのデフォルトのエンコーディングはすでにUTF-8なので、すぐに動作します。ご協力いただきありがとうございます。 – weijun