2009-10-06 9 views
5

仮説的な状況:パスワード処理システムを実装しており、使用できる文字に制限を全く課すものではありません。あなたは2つのことの間で合理的な妥協であるいくつかのルールを設定したいと思う -パスワードに無効な文字はありますか?

  1. できるだけ多くの自由をユーザに許してください。
  2. 今後のパスワードの扱い方を変更する可能性があります。ユーザーの既存のパスワードが無効になるため、合理的な実装を排除する必要はありません。

どのようなルールを適用しますか?あなたの選択に影響する可能性のある他の要因はありますか?

答えて

8

あなたが本当に正当化できない限り、制限はありません。

銀行、電子メールプロバイダ、またはクレジットカードを提供せずにユーザーが何かを注文できる場合、ユーザーに強いパスワードを使用させることは意味があります。そうでなければ、何の理由もなく難しいだけです。

あなたが保存すべきものについては、制御文字が禁止されている1024文字のユニコードはすべて正当化されていると言えます。ユーザーが入力できない場合は、別のパスワードを選択したはずです。格納しているのはハッシュなので、いつでも好きなサイズにカットすることができます。

+2

私は、keepassを使用しています。これには、 "ANSIのような高い文字を使用するオプションがあります:' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – RCIX

+2

RCIXのコメントはKevinの言うことと矛盾することを意図していますが、それらは制御文字ではなく、提案されたルールによって禁止されていません。彼らはちょうど7ビットのASCIIではありません。 –

+0

私が期待していた答えではありませんが、明らかに最も合理的なものです。そこには多くのシステムが制限を課しており、私は彼らには正当な理由があると思っていました。もしそうなら、ここに誰も何があるのか​​分からないので、私は私の前提を変えるでしょう!ここでのいくつかの他の答えは、許可すべき文字ではなく、課されるべき制限に関するものです。 –

0

私はあなたのキーボードで、タブ以外の1つのキーで(そしてオプションでシフトすることができる)何かを保つつもりです。どのようなスキームがより制限的なオプションを必要とするでしょうか?

+0

私とは異なるキーボードを使用する人は、* less *の制限オプションが必要になります。私がコードを書いているときに私は私の目の前で起こったキーボードの特長は何ですか?あるキーストローク+シフトでユーロ記号やe-acuteを得る人もあれば、シフトできない人もいます。 –

13

制限は一切ありません。そして、それはあなたがハッシュではなくパスワードを保存することを計画しているように思えます。どちらもしないでください。むしろ、saltを保存し、パスワードと前記塩との組み合わせをハッシュ化する。

しかし、パスワードの長さ(たとえば6文字以上)とパスワードを構成する文字(たとえば、大文字と小文字のアルファベット、1桁または2桁、^または#などのアルファベット以外の文字が含まれます)。

+1

何をしても、最大文字長を制限しないでください。私はKeepass経由で巨大なパスワードを生成し、私はそれを使用する生成アルゴリズムをダウングレードする必要があるときに私を悩ます。 – RCIX

+1

なぜこの回答が投票され続けるのか分かりません。質問には答えません!問題は「あなたはどんな制限を課すだろうか? "あなたはどんなキャラクターを無効にしますか"でした。ほとんどまたはまったく制限がないことを示唆する回答は、それに対するより合理的な回答と思われます。 (そして、いいえ、パスワードをプレーンテキストとして保存しません)。 –

+1

@issy:最初の文があなたの質問に完全にうまく答えます。パスワードをプレーンテキストとして保存しないという事実は、あまりにも不明な「パスワード処理スキーマの変更」について尋ねているのですぐには分かりません。あなたが格納しているすべてがパスワードハッシュであるときに何がうまくいかない可能性がありますか? –

0

ユーザーに少なくとも数字と英数字以外の文字を入力し、6文字以上の長さのパスワードを入力させます。とにかく、パスワードを検証する方法を変更した場合、制限事項に関わらず、妥当な時間にユーザーに通知して更新する必要があります。

2

非制御文字は問題ありません。私は、将来、スーパー・デュパー・パスワード・システムの開発者は、句読点やその他の記号のような「珍しい」ASCII文字を許可すると思うはずですが、制御文字は、テキスト・モード・シェルやタブを期待するGUIダイアログ彼ら自身の目的のために自由になるためにEnter/Returnを押してください。

2

(それはハッシュ化される前に、誤ってトリミングすることができるロジックに基づいて)空白

-3

私は強制を示唆しているルール:

  1. 長さ - 劣らず8文字以内 - しかし超えません20
  2. 簡素化 - パスには、ユーザーの名字、姓またはユーザー名、英数字辞書に表示されている単語(チェック可能な場合)は含まれないようにしてください。
  3. 内容 - キーボードには、大文字、小文字、数字、句読点の4種類の文字があります。良いパスワードには、少なくとも3つのグループの代表者と、同じグループの2〜3文字以内の行を含む必要があります。
+4

これらの絶対的なルールの拡散をやめてください。これらの規則は銀行にとっても意味をなさない - 私はあなたが "abcDEF32_!"の規則で選択することを余儀なくされるのではなく、私が覚えることができる長いパスフレーズを好む。または類似。 –

+1

最小8文字の制限により、ユーザーはパスワードを覚えておくのではなく、パスワードを書き留めてしまいます。非常に悪い考え。 X番号とYの特殊文字を強制するのと同じことです。 4文字または5文字の文字は、より合理的です。 上限値20も低すぎます。私は時々、パスワードとして全センテンスを使います。なぜなら、異なるタイプの8つのランダムな文字よりも覚えやすいからです。 – Erik

+2

私はkeepassを使用し、使用できない素晴らしいパスワードを生成することができないときは嫌いです。 – RCIX

2

パスワードに制限はありません。地域のキーボードを使用しているかどうかに関係なく、キーボードから入力できます。少なくとも1つの数字と1つの特殊文字のようなオプションで、最小限の長さを指定することができますが、上限はありません。

あなたの2番目の質問について。私がそれを実装する方法は、あなたがパスワードの強さを向上させるように別のフィールドを作ることです。たとえば、今のところ、パスワードに関連する2つのフィールドsalt、password_md5があります。後であなたがsha256を使いたいと言うことができます。 password_sha256という新しいフィールドを作成します。ユーザーがログインすると、まずpassword_sha256を確認します。そのフィールドが空の場合は、password_md5をチェックします。一致した場合は、ユーザーが入力した平文のパスワードがあります。その後、sha256パスワードを生成することができます(私はソルトを適切に再設定します)、新しい値を保存します。私はpassword_md5の値を空白にして、誰もパスワードを得ることができないようにします。

個人的には、あなたの言語ができる最高のハッシュを使い、それを使用しています。重要なことは、パスワードが "1234"のときのハッシュの安全性に関係なく、辞書攻撃を避けるためのランダムな文字をハッシュに設定することです。

0

私たちの組織では、ユーザーがパスワードを入力している場合は、ユーザーが希望するものを使用できるようにします。

ユーザーがシステムに初めて登録されると、パスワードが生成されます。このパスワードは通常それらに郵送されるので、特に特定のフォントを使用するときに混乱する特定の文字の使用は避けています。たとえば、文字「O」と数字「0」は使用されません。 L、Iと1(1)、Sと5、Zと2などと同じです。私たちは、この変更を行った前

私たちは、文字化けするので、当社のヘルプデスクへのコールの多くを持っていたし、彼らは、ログインができませんでした。個人的に

0

、私はDigitalPersonaの指紋のキーボードを使用する(はい、マイクロソフトはありません[またはキーボードと一体化されていても、キーボードとは別体であっても同様の装置を作った)。

これにより、書き留める必要がない非常に長くて複雑なパスワードの生成が可能になります(リーダーの指を押すことで、ログオンダイアログ[システム/アプリケーション/ Webサイト]にパスワードが提供されるため)。

これは私の意見では、両方の世界の中で最高のものを提供しています。パスワードを覚えることなく「推測」するのが非常に難しいです。また、異なるシステムで異なるパスワードを使用するというセキュリティの推奨事項も簡単になります。

これは私の2セントの価値です。

+1

これは質問されている質問には答えません。 –

0

個人的には、私はいつもあまりにも多くのルールを強制しないことに熱心でした。

これは変更されました。私は自分のウェブサイトがXSS攻撃に対して脆弱であることを発見しました。解決方法は、パスワードを含む、ユーザーからのすべての入力をサニタイズすることです。

私たちは10年間、パスワードに制限はありませんでした。 ここでは、使用できる文字の制限を実装しています。これは、単にハッカーがJavascriptやSQLにアクセスできないようにするためです。そこで、次のリストを作成しました。

a-z A-Z 0-9。 - _ $ *()#@! %/(空白)

これにより、多くの柔軟性が得られますが、XSSハッキングのコーディングで使用される可能性のある文字は避けられます。 <> \ {} [] + =? &、 ' "`

HTH

-1

従うべきいくつかのルール:。

  1. 避け制御文字それが今日のように普及していないですが、制御文字すべてが特別な意味を持っており、一部のハードウェアインターセプトがに文字をコントロールします特別な機能を実行するものもあれば、データの問題を引き起こすものもあります。コントロール0(ゼロ)を入力するとヌルが生成されます
  2. セキュリティ制限を課しますか?これはユーザーインターフェイスの問題とセキュリティ上の問題です。セキュリティの必要性以前に与えられた例は古いものです。パスワードの組み合わせのハッシュテーブルは15文字までのパスワードで公開され、16文字のパスワードは一般的な人間の行動に従っている場合には数分で強制的に強制的に使用されます。首都で始まり、数字または特殊文字で終わります。
  3. 私は、一般的なOSやDB言語で使用される一般的なワイルドカード文字、引用符、コロン、セミコロンなどを避けたいと思います。
  4. 多因子認証は良い方法です。パスワードにのみ依存するのではなく、パスワードをまったく受け入れないでください。
関連する問題