2009-04-25 4 views
1

MS SQL SERVER 2005の手順でログインするためのユーザー名とパスワードを確認しています.SQL Server 2005では大文字ではなく小文字のパスワードを入力しても大文字と小文字が区別されないため、 、システムはログインすることができます。MS SQL Server 2005 - 大文字と小文字を区別しないパスワードの問題

私は何をすべきですか?同じことを確認できるSQL Server 2005のコマンドはありますか?

答えて

0

SQL Server 2005は、大文字と小文字を区別しない比較を使用する既定の照合によってのみ使用されます。パスワードは平文で保存しないでください。合理的に安全なハッシングアルゴリズムを使用してそれらをハッシュし、ハッシュを格納する必要があります。 (おそらく実際には塩の値を使うべきですが、ハッシュから始めましょう)。

3

大文字と小文字を区別する照合を使用します。

...where Password = @password COLLATE SQL_Latin1_General_CP1_CS_AS 

はい、実際にはデータベースにプレーンテキストのパスワードを保存しないでください。

1

平文のパスワードを保存しないでください。パスワードのハッシュを保存して比較してください。 HashBytes()関数を使用できます。

+0

とHTTPごとなどを://security.stackexchange .com/q/963/485、MD5を使用しないでください。 –

+1

@Rory - md5を提案することはありません - HashBytes()はいくつかのshaバリアントをサポートしています。しかし、これは今でもまだ古いです。これはbcryptをサポートしていないので、bcryptを使用していない場合は間違っています。 –

+0

ええ、それは古いものです。この回答は2009年4月ではなく、4月10日からのものだと思いました。すべての方法でbcrypt :-) –

0

は、たとえば、ケースを比較するための高感度collationを使用します。

SELECT 
    Id 
FROM 
    UserTable 
WHERE 
    UserName = @UserName 
    AND Password = @Password COLLATE SQL_Latin1_General_Cp1_CS_AS 

をパスワード欄の文字セットと一致する照合を使用してください。

別の言葉 - クリアテキストパスワードをデータベースに保存してもよろしいですか?これは、セキュリティ上の決定については、トップレベル5の方がいいです。

+0

はそれを詳しく説明できますか? – Roshan

-2

クリアテキストのパスワードを保存して、他の人のアドバイスを繰り返さないようにすることもできますが、通常は音がします。

照合を設定するだけでなく、あなたもそうのようにvarbinary型のトリックを使用することができます。

WHERE 
    CAST(Password as varbinary(20)) = CAST(@Password as varbinary(20)) AND 
    CAST(Username as varbinary(20)) = CAST(@Username as varbinary(20)) 

以上も大文字と小文字を区別した検索になります - ちょうどフィールドと同じにvarbinary型の長さを設定することを忘れないでください長さ

インデックス・スキャンを避けるために、あなたにも大文字小文字を区別しない検索を含めることができます - それはインデックスが追求し、その後varbinaryの検索を実行するでしょう:

WHERE 
    Password = @Password AND 
    Username = @Username AND 
    CAST(Password as varbinary(20)) = CAST(@Password as varbinary(20)) AND 
    CAST(Username as varbinary(20)) = CAST(@Username as varbinary(20)) 
+0

パスワードをクリアテキストとして保存することが有効な例を挙げることができますか?パスワードを知ってもらうための有効な例がないので、決して使用しないシステムにする必要があります。 –

+0

たとえば、レガシーシステムとの相互運用性。私が言っていることは、それをハッシュする代わりにクリアテキストを保存する理由があるかもしれないということです - そして、OPが尋ねていることに対して直接の解決策を提示することなく、同じアドバイスを述べる10の回答の理由は本当にありません。 –

関連する問題