序文
登録機能の開始時には、パスワードが
直接表示されます
が、実際の運用では、データのセキュリティを確保するために、ユーザーのパスワードを暗号化してデータベースに保存する必要があります
。このセクションでは、md5 を使用してユーザー パスワードを暗号化して保存する方法を紹介します。
組み込みモジュール暗号をインポートする
新しいutilsフォルダーを作成し、その中に暗号化方式を記述するための新しいファイルmd5.jsを作成します。
ここでは、組み込みモジュール暗号を使用する必要があります。それを直接インポートするだけです。
const crypto = require('crypto')
暗号を使用する
const crypto = require('crypto')
var d = crypto.createHash('md5').update('123').digest('hex')
パラメータの意味について話しましょう。
- crypto.createHash メソッドを使用します。後ろのかっこ内の内容は、使用される暗号化方式を表します。ここでは md5 です。
- 次の .updata は、暗号化されるコンテンツを表します。
- .digest は暗号化に選択されたアルゴリズムです。ここでは 16 進数を使用します。
上記のコードは 123 を暗号化するものです。結果を確認するために出力します。
上記の暗号文は 123 を暗号化した結果です。MD5 暗号化には特性があります。同じ値を暗号化した後の暗号文の結果は同じであるため、次のようになります。ブルート フォース クラッキング (ライブラリ内の暗号文を取得して対応する平文を見つける) この問題には次の解決策があります; 4.
暗号化された値の前に文字列プレフィックスを追加します
。は文字列です。次のパスワードを解読するのは困難です
const crypto = require('crypto')
var d = crypto.createHash('md5').update('by' + '123').digest('hex')
- 2層暗号化とは、一度暗号文を取得した後、再度暗号化することです。
エクスポート方法
暗号化の使用については上で説明していますが、簡単に使用できるようにメソッドを以下に直接エクスポートします。
const crypto = require('crypto')
module.exports = str => {
return crypto.createHash('md5')
.update('by' + str)
.digest('hex')
}
暗号化方式を使用する
上記はエクスポートされており、直接使用できます。
ここでは userModel.js で直接使用し、最初にメソッドをインポートし、次にパスワードの set メソッドを使用して、カプセル化した md5 暗号化メソッドを呼び出します。
password: {
type: String,
required: true,
set: value => md5(value),
select:false
},
これで完了です~~ テストを実施し、登録リクエストを送信し、データベースを表示します。
データベース内のユーザーのパスワードは暗号化されています: