![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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 {
//エラー
}
No.1ベストアンサー
- 回答日時:
パスワードを暗号化する場合は、hash 関数を使うのが一般的でしょうかね。
ハッシュアルゴリズムは sha256 あたりが最近は多いでしょうか。
http://www.php.net/manual/ja/function.hash.php
DBに登録する際に
hash("sha256", $password);
で暗号化したデータをDB入れておきます。
照合する際には
mysql_real_escape_string(hash("sha256", $_POST['pass']))
として、検索をかければ照合できます。
No.3
- 回答日時:
パスワードを保存するときは、ハッシュ化(復元不可能な暗号化)をしなければなりません。
これはパスワード管理の基本中の基本です。
登録の時に、hash("sha256", $salt . $_POST["pass"]) とかで変換してDBに格納し、認証の時には入力された物を同じ関数でハッシュ化して、格納された値と一致したら認証OKとします。
$saltについては、「ハッシュ ソルト」とかで検索して勉強してください。
セキュリティは難しいように見えますが、基本がわかってしまえば楽です
あと、sprintf + mysql_real_escape_string でSQL文を組み立てるのは古いやり方で、
これからプログラミングを学ぶのなら、やめましょう。
mysqliライブラリとかPDOライブラリとかの、prepare等を使ってください。
お答え頂きありがとうございます
簡単ではありますが暗号化できました
>mysqliライブラリとかPDOライブラリとかの、prepare等を使ってください。
世の中の動きについていけそうもありません(汗
No.2
- 回答日時:
パスワードの暗号化の前提に、通信の秘匿化がされているかどうかが重要です
httpsなどを利用する予定がないなら、あまりこだわっても所詮生のパスワードデータが
行きかうのであまり意味がないかもしれません
ただし、データベース上でパスワードを暗号化するメリットといえば
サーバーをハックされたときに解析されづらいということも重要です。
また管理者が複数いる場合、自分以外の管理者が他人のIDを不正に利用する可能性もあります
それを防ぐために、管理者であってもクライアントのパスワードを類推できないような
暗号化をすることは少なからず必要かもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一つ前のレコードの値と減算し...
-
selectした大量データをinsert...
-
副問合せの書き方について
-
Yahoo .comの idには年齢制限、...
-
エクセルで最後の文字だけ置き...
-
マイクラPC版のコマンドで効率...
-
期間の重複を調べるSQL文につい...
-
SQL Left Join で重複を排除す...
-
同じサーバーで、異なるデータ...
-
SQLについての質問
-
貝を買って中から死にかけのカ...
-
EXPLAINのtypeがALLのときの対...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
Mysqlでunionを使った検索速度...
-
ストアドのエラーについて
-
sqlite結果の非表示
-
インスタの名前でかっこいいと...
-
MYSQL PERL からの抽出について
-
mysqlで特定のカラムから下4桁...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
SQLサーバから、項目の属性(型...
-
副問合せの書き方について
-
VIEWの元のテーブルのindexって...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
sqlで、600行あるテーブルを100...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
Unionした最後にGROUP BYを追加...
-
期間の重複を調べるSQL文につい...
-
クエリ表示と、ADOで抽出したレ...
-
Access パラメータクエリをcsv...
-
PL/SQLの変数について
-
MySQLのDATE型カラム値がNULLの...
-
php+mysqlで複数選択削除について
-
上位3位を求めるSQL文は?
おすすめ情報