1

を使用して、MySQL 5.1 データベースからフォルダーのユーザーを認証したいと考えていますAuthType Basic
パスワードは平文で保存されます (実際にはパスワードではないため、問題ありません)。ただし、apache のパスワード形式は、こちらで説明されているよう
に、Linux システムでは SHA1、MD5 のみを許可します。

SQL クエリで正しい形式を生成するにはどうすればよいですか? Apache 形式は長さ 20 のバイナリ形式のようですが、mysqlSHA1関数は長さ 40 を返します。

私のSQLクエリは次のようなものです:

SELECT CONCAT('{SHA}', BASE64_ENCODE(SHA1(access_key))) FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s

wherebase64_encodeはストアド関数です (Mysql 5.1 にはまだありTO_BASE64ません)。このクエリは、apache が使用するフォーマットとは異なる 61 バイトの BLOB を返します。どうすれば同じフォーマットを生成できますか?

これについても他の方法を提案できます。ポイントは、プレーン テキストをパスワードとして使用して、MySQL5.1 データベースからユーザーを認証したいということです。

4

1 に答える 1

2

あなたが参照しているドキュメントは、「Unixのみ」によって非Linuxを意味するものではないため、crypt()を使用できます。あなたはセキュリティに関心がないように思われるので、これがMySQLの暗号化機能と並んで最も簡単なオプションであることをお勧めします。クエリで一定のシード値を使用することをお勧めします。

SELECT ENCRYPT(access_key, 'SA') FROM user_access_keys INNER JOIN users ON user_access_keys.user_id = users.id WHERE name = %s
于 2012-09-23T07:18:35.163 に答える