スクリプトのお勉強 技術

言語別ログイン機能パスワード保存処理方針

投稿日:

ちょっと前に、ログイン機能を作成した際、パスワードを暗号化するか、という議論を目にしたことがありました。

昔だと、「パスワードを暗号化しない」方で実装していましたが、最近はセキュリティが当たり前になってきたので、それもどうかと思います。

なのであらかじめ、パスワードを保管する際に使用する暗号機能の方針ぐらいは調べておこうと思いました。

JavaScript

実際には難しそうなので、パスワード保管の要件を外します。いまのところJavaScript(クライアント側)で暗号化してパスワードを保管しておく安全な方法は難しいです。。

Perl

Digest::SHAを使用します。

  • 保管($digest): $digest = hmac_sha256_hex($password, $salt);
  • salt: 固定文字列
  • チェック: $passwordと$saltを入れて、保管した$digeestと一緒かチェック。
use Digest::SHA qw(hmac_sha256_hex);
my $data = "aaa";
my $key = "bb";
my $digest = hmac_sha256_hex($data, $key);

Python

import hashlib, uuid

salt = uuid.uuid4().hex
password = "aa"
hashed_password = hashlib.sha256(password + salt).hexdigest()

print (hashed_password)

ruby(rails)

bcryptを使います。すぐには分からなかったので割愛します。

PHP(7.0)

password_hashを使用します。

<?php

$input = "aaa";

$hash = password_hash($input, PASSWORD_DEFAULT);

print $hash;

if (password_verify($input, $hash)) {
            echo 'Password is valid!';
} else {
            echo 'Invalid password.';
}

-スクリプトのお勉強, 技術

執筆者:

関連記事

IPS/IDS(Suricata)のインストール

とても遅まきながら、暇なのでIPS/IDSをこのサイトに組み込んでみます。 Suricata SuricataというOSSのIPSがあるそうなのでインストールしてみます。 環境 CentOS7(7.9 …

Nuxt.jsのFormで入力/確認/完了フォームを作成してみた(その2)

前回の記事の続きです。以下について書いていきます。この記事で終わりのはず? バリデーション機能(主にIPアドレスのバリデーション追加)画面 バリデーション機能 バリデーション機能は、vee-valid …

Pipenv vs Poetry

1. はじめに Pythonでお仕事していると、どうしても、環境設定を行う必要があります。 本番環境で動作するように、設定しなければいけないからです。 いろんな状況はあるでしょうが、私がかかわるプロジ …

seaborn + Pandas + Python によるグラフ描画(その2: グラフ描画編)

前回の続き 前回の続きです。 折れ線グラフ まずは折れ線グラフを描画したいと思います。 描画するのは以下です。 運用商品(4つ)日経平均 以下で起動します。引数(dataset-2017-201908 …

Pythonからsvnしてみる

SVN: レガシーシステムの一つ。。 私の関わってるシステムでは、いまだにsvnレポジトリがあります。pythonで処理する必要性が生じましたが、そういえばどう処理していいもんか、完全に忘れました。 …

    google オプトアウト Click here to opt-out.