スクリプトのお勉強 技術

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

投稿日:

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

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

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

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.';
}

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

執筆者:

関連記事

Selenium + Python によるアップロードアプリの動作確認プログラム作成

私の周りでは、なぜかSeleniumが流行っている模様です。 私自身は、Webアプリ的なのも作ってますが、あまり使ってなかったので、使ってみようと思います。 前回作成した、Djangoのupload_ …

Githubからお告げ

Githubからお告げが来た お告げってのは大げさですが。 Github にpackage-lock.jsonを置いておくと、Githubが脆弱性検査をして、メールを知らせてくれます。 js-yaml …

Djangoのurls.pyにはまった。。

けっこうハマった。。 Django 2.2.4の話。以下のエラーを修正するのに、とっても時間がかかった。 django.urls.exceptions.NoReverseMatch: Reverse …

Python3 – VCR.py でネットワーク系テストを簡単に作成する

1. 始めに python3で実装すると、モックテストをしたくなります。モックを使って、比較的簡単にテストできるからです。 問題はネットワーク系テスト モックテストで問題になるのは、外部に依存するテス …

(小ネタ) python3 date_range + step付き

ちょっと前に同じような感じのネタを。。 したような気がするのだが、まぉおいておこう。。 素のPython3で、日付にてfor文を回す方法 日付で分割して処理をしたいと思うときがあります。例えば、202 …

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