電子書籍の厳選無料作品が豊富!

php+mysqlでシンプルな会員登録を作りたいのですがパスワードは暗号化したほうがいいですか?

パスワードを簡単に暗号化できる方法はありますか?
postされたpassと暗号化されたpassのチェック方法がわかりません


ログイン
if ($_POST['id'] !='' && $_POST['pass'] !='') {
$sql = sprintf('SELECT * FROM hoge WHERE id="%s" AND pass="%s"',
mysql_real_escape_string($_POST['id']),
mysql_real_escape_string($_POST['pass'])
);

$record = mysql_query($sql) or die(mysql_error());
if ($table = mysql_fetch_assoc($record)) {
$_SESSION['id'] = $table['id'];
$_SESSION['name'] = $table['name'];
} else {
//エラー
}

A 回答 (3件)

パスワードを暗号化する場合は、hash 関数を使うのが一般的でしょうかね。


ハッシュアルゴリズムは sha256 あたりが最近は多いでしょうか。
http://www.php.net/manual/ja/function.hash.php

DBに登録する際に
hash("sha256", $password);
で暗号化したデータをDB入れておきます。

照合する際には
mysql_real_escape_string(hash("sha256", $_POST['pass']))
として、検索をかければ照合できます。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます
簡単ではありますが暗号化できました(_ _

お礼日時:2013/05/28 19:31

パスワードを保存するときは、ハッシュ化(復元不可能な暗号化)をしなければなりません。


これはパスワード管理の基本中の基本です。

登録の時に、hash("sha256", $salt . $_POST["pass"]) とかで変換してDBに格納し、認証の時には入力された物を同じ関数でハッシュ化して、格納された値と一致したら認証OKとします。
$saltについては、「ハッシュ ソルト」とかで検索して勉強してください。
セキュリティは難しいように見えますが、基本がわかってしまえば楽です

あと、sprintf + mysql_real_escape_string でSQL文を組み立てるのは古いやり方で、
これからプログラミングを学ぶのなら、やめましょう。
mysqliライブラリとかPDOライブラリとかの、prepare等を使ってください。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます
簡単ではありますが暗号化できました
>mysqliライブラリとかPDOライブラリとかの、prepare等を使ってください。
世の中の動きについていけそうもありません(汗

お礼日時:2013/05/28 19:30

パスワードの暗号化の前提に、通信の秘匿化がされているかどうかが重要です


httpsなどを利用する予定がないなら、あまりこだわっても所詮生のパスワードデータが
行きかうのであまり意味がないかもしれません

ただし、データベース上でパスワードを暗号化するメリットといえば
サーバーをハックされたときに解析されづらいということも重要です。
また管理者が複数いる場合、自分以外の管理者が他人のIDを不正に利用する可能性もあります
それを防ぐために、管理者であってもクライアントのパスワードを類推できないような
暗号化をすることは少なからず必要かもしれません。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます
httpsですか、調べてみます

お礼日時:2013/05/28 19:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!