5

これは少しソフトな質問です。これに適した場所があれば、遠慮なく教えてください。

国際文字を必要とするパスワードを受け入れるコードを開発しているので、入力された Unicode 文字列と保存されている Unicode 文字列を比較する必要があります。簡単です。

私の質問はこれです - 国際文字セットのユーザーは一般的にそのような場合に正規化を期待しますか? 私の Google 検索では、「常に行う」(http://unicode.org/faq/normalization.html) から「気にしない」まで、いくつかの意見の対立が見られます。正規化しないことの長所/短所はありますか? (つまり、パスワードを推測する可能性が低くなるなど)

4

2 に答える 2

5

パスワード フィールドが Unicode 入力 (おそらく UTF-8 または UTF-16) を受け入れる場合は、ハッシュと比較の前に正規化することをお勧めします。正規化せず、人々が異なるシステム (異なるオペレーティング システム、Web アプリの場合は異なるブラウザー、または異なるロケール) からアクセスすると、同じパスワードが異なる正規化で表される可能性があります。これは、ユーザーが正しいパスワードを入力しても拒否されることを意味し、その理由は明らかではなく、パスワードを修正する方法もありません。

于 2011-03-15T04:51:43.443 に答える
-3

私はいくつかの理由で気にしません:

  1. 物事の安全性を低下させます。DB で 2 つ以上の文字がすべて同じものとして表されている場合、そのサイトで使用できるパスワードが少ないことを意味します。(ただし、考えられるパスワードの数は非常に膨大であるため、これはおそらく大したことではありません。)
  2. あなたは、(おそらく) あなたが書いていないライブラリの一部である複雑な作業を行うコードをプログラムに組み込むことになります...そして最終的には、結果として誰かがログインできなくなります。物事をシンプルに保ち、さまざまな文字セットを使用する人々がそれらを適切に入力する方法を知っていると信じることをお勧めします。とはいえ、私はこれを国際的なパスワード形式で実装したことがないので、標準の設計パターンが何であるかを説明できませんでした.
于 2011-03-21T22:24:53.380 に答える