ユーザー資格情報をフレックスに保存する最良の方法は何ですか? ローカル ストレージは情報をプレーン テキストとして保存するため、機密データの保存には適していないようです。
6 に答える
すべきではありません。ブラウザーの Cookie またはセッション トークンを使用して、サーバーに対してユーザーを識別します。例えば:
- ユーザーはユーザー名とパスワードを Flex のフォームに入力し、[ログイン] をクリックします。
- サーバーは資格情報を検証します。次に、メモリ内またはデータベース内で、サーバーがランダムな (そして十分に安全な) トークンをユーザーに関連付けます。次に、サーバーはトークンをクライアントに返します。
- クライアントはトークンを Cookie、LocalSharedObject、または単にメモリに保存します。その後のリクエストにもトークンが含まれます。
ExternalInterfaceを使用して JavaScript と通信し、ブラウザの Cookie にデータを保存できます。
ユーザーの名前やパスワードを Cookie に保存しないでください。資格情報を含むセッションをサーバーに作成し、セッション ID をブラウザーの Cookie に保存します。
サービスが資格情報をサポートしていない場合、できることは、ユーザーのログイン状態を に保存することだけですSharedObject
。
のハッシュ値を に保存し、 のコピーを に保存することもできますUserName + Random Token
。SharedObject
アプリケーションUserName
のSharedObject
作成時にcreationComplete
、ハッシュ値が保存されたユーザー名と一致するかどうかを確認します。
このトリックの良い点は次のとおりです。
- パスワードがローカルに保持されることはありません。
- ユーザー名とハッシュ値を一致させる必要があるため、ログインを偽造するのが難しくなります。
ここで説明するのは少し難しいですが、ここで確認できます。ソースコードはダウンロードできます。
資格情報をプレーン テキストとしてローカル ストレージに保存する必要は必ずしもありません。実際、ローカル ストレージ (SharedObject) は実際には AMF としてシリアル化されるため、そもそもプレーン テキストではありません。機密データの保存に使用する媒体が何であれ、SHA1 や RSA などの何らかのハッシュまたは暗号化技術の使用を検討する必要があります。
ハッシュと暗号化の違いは次のとおりです。
- ハッシュ (SHA1、MD5 など) は一方向の暗号化です。つまり、ハッシュ値の元の値を特定することは非常に困難です。したがって、できることは、あるハッシュ値を別のハッシュ値と比較することです。同じことを吐く。
- 暗号化 (RSA、AES など) は双方向の暗号化です。つまり、通常は公開鍵と秘密鍵の組み合わせを使用して、暗号化されたデータの元の値を判断できます。
それは本当にあなたがしようとしていることに依存します。
あなたが正しく来ることを願っています
ユーザー資格情報は通常、セッション変数に格納されます。
SharedObject は、パスワードを保存する場所としては非常に不適切です。
これを見てください:
http://livedocs.adobe.com/flex/3/html/help.html?content=security2_22.html