• 締切済み

php パスワード 暗号化

phpの会員サイトにてパスワードの暗号化を実装したいと思い、投稿させていただきました。 会員の人はパスワード変更→暗号化でDBに登録。 変更したパスワード(暗号化されている)でログインという流れを作りたいのですが、 暗号化でDBに登録まではできましたが、ログイン認証で一致せず困っております。 どなたか教えていただけないでしょうか? 例: <input type="password"name="password" value="1234"> $pass = $_POST[pass]; $password = crypt($pass); $passwordをDBに保存。 その後ログアウトし、ログインのパスワードで1234を入力すると「一致しません」となります。 login認証の際にどのように実装してよいのかわからず困っています。 また、上記の内容にてセキュリティ上に問題がありましたらご指摘お願いします。

  • h-h13
  • お礼率24% (37/149)
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

提示されたソースでは第二引数(salt)を省略されているようですが、適切な文字列を指定してもダメですか(当然ですが登録時・参照時で同じsaltを使います)。 RTFM. http://php.net/manual/ja/function.crypt.php salt - ハッシュのもととなる salt 文字列。省略した場合の挙動は アルゴリズムの実装によって決まるので、予期せぬ結果となることがあり得ます。 (蛇足) 「例」として提示されているソースは、input要素のname属性と$_POSTの添え字が違うなど、ちょっと例としても不適切ではないですかね(汗

関連するQ&A

  • パスワードを暗号化して保存

    VB.NET(VS2010)で開発しています。 パスワードを暗号化して保存したいのですがいまいち方法が わかりません。 当たり前ですがパスワードは任意で変更可能です。 それを暗号化して保存、そして次回からは変更されたパスワードを使ってDBへログイン。 暗号化したもの単体で複号出来ないと困ります。 なるべくiniファイルではなくVS2010やVS2008の機能(リソース?)で実装したいです。 よろしくお願いします。

  • パスワードを暗号化するCGI

    基本認証のパスワードを暗号化するCGIを作ったのですが、 基本認証で認証させようとしてもうまくいきません。 cryptで行った暗号化は基本認証には使えないのでしょうか?

    • ベストアンサー
    • CGI
  • phpのパスワードの認証について

    パスワードの認証について質問です。正常に動いているのは確認しました。 フォームから受け取ったパスワードをサタニサイズ等をし、データベースで認証する前に認証のテストをしてみようかと思い、下記のように書いてみたのですが、これって意味ありますか? if($_POST['password']=='et って直接書いてあるしバレバレなのかな~と思ったのですが、どうでしょうか? ほかにもっとよいコードの書き方があれば教えてください。 if($_POST['password']=='et') { if(password_verify($password,$pass) ){ echo "一致しました。"; }}else { {echo "一致してません";} }

    • ベストアンサー
    • PHP
  • 【PHPで認証】パスワードの暗号化は無意味では??

    PHPにて会員専用ページを作りたいと考えているものです。 パスワードは暗号化すれば安全…と思っていました。しかしよく考えると暗号化されたパスワードをハッカーが盗んで自分のPCのCookieに入れたらなりすましが可能ではないのか?ということに気づきました。正規のユーザーもログイン後は暗号化パスワードをサーバーに渡してページごとに認証しているわけですから。 パスワードの暗号化は本当に意味があるのでしょうか? 暗号化されたパスワードは盗まれても問題ないのでしょうか? お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • パスワードの暗号化

    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 { //エラー }

    • ベストアンサー
    • MySQL
  • phpとDBを使いパスワード変更ページ

    いつもお世話になっています。 今回phpとdbで実験的にサイトを作りました。会員制のサイトです。 実験的に作ったものでどこかで公開することはないのでセキュリティなどはガバガバです。 これからしっかり勉強していこうと思いますが、会員制のサイトをログインするにあたりメールアドレスとパスワードでログインしてもらうというようにしました。 パスワードを自分で決めてその内容を登録してログインすることはできたのですが、たまに見かける最初に仮パスワードを発行しその後でパスワード変更ページで変更してもらうというようなページを作りたいです。 このようなページは一体どのように作ればよろしいのでしょうか。 最初に発行した仮パスワードはsha1ファンクションを使って暗号化しています。 最初にdbないのパスワードを参照しその後に変更するようなソースをかけばよろしいのでしょうか とても初歩的な質問ですがお時間があればアドバイスお願いします。

    • ベストアンサー
    • PHP
  • DB内にMD5でハッシュ化されたパスワードとの照合

    MySQLのDBにMD5でハッシュ化されたパスワードが格納されているのですが、これをPerlのスクリプトで照合したいと思っています。 具体的には、DBに格納されているパスワードを用いて、Perlで作成された会員専用ページなどにログインをするといった感じです。 DBIを用いてDBからの情報を取得することはできたのですが、Perl側での対処がわかりません。 Perl側で入力されたパスワードをハッシュ化して、双方を照合するなどの情報を見たのですが、いまいち解らず認証することができませんでした。 以下にパスワードに関する部分のソースを記載させていただきます。 srand(); @salt = ( "A".."Z", "a".."z", "0".."9", ".", "/" ); $salt = '$1$' . join('', map($salt[int(rand(64))], 1..8)) . '$'; $pass = crypt($in{'pass'}, $salt); crypt($in{'pass'},$ary) eq "$ary") ※$aryはDB内に格納されているパスワードです Perlに関して殆ど解っていないもので、とんちんかんな記述かもしれませんが、ご教授いただけますと幸いです。 宜しくお願いいたします。

  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?php //パスワードの設定 $password = "admin"; //パスワードチェック passchk(); function passchk(){ global $password, $post; $p = $post['pass']; if ($p == $password) { echo "認証成功!"; // return; } else { echo<<<EOM <p>パスワードを確認して下さい。</p><br> <form action="login.php" method="post"> パスワード:<input type="password" name="pass" size="8"> <input type=submit value="ログイン" /> </form> EOM; exit; } } ?>

    • 締切済み
    • PHP
  • cryptで暗号化する

    .htaccessのベーシック認証を 登録型みたいな風にして使用したいと思うんですけど、 .htpasswdファイル内に記入する ID:この部分(パスワード) をcryptで生成するようなのですが、各サイトで説明しているようにやってもできません。 どうすればきちんと暗号化できるのでしょうか? よろしくお願いします。

  • PerlでLinuxのユーザー認証・管理プログラム

    ブラウザでLinuxのユーザー名とパスワードと入力して、 ユーザー認証してログイン後、Linuxユーザーの パスワードを自分で変更できるプログラムが作りたいのです。 /etc/passwdにパスワードが直接記録されていれば簡単なのでしょうが、 シャドウパスワードなので苦労しています。LinuxはFedora Core3です。 まず、/etc/shadowに記録されているような、 $1$ではじまる暗号化されたシャドウパスワードをPerlで作るには どのようにしたらいいのでしょうか。 pwconvのソースをみたらどんなアルゴリズムかわかると思い、 shadow-utilのSRPMをインストールしてみたりしましたがわかりませんでした。PHPのメーリングリストに $salt = substr(md5(microtime()), 0, 9); return crypt($password, "$1$" . $salt); このようなコードがあったのですが、これでは$saltが毎回 代わってしまい、よくある $salt=substr(暗号化されたパスワード,0,2); if(crypt($pass,$salt) ne 暗号化されたパスワード){ &err("パスワードが違います"); } のような認証ができないのではないかと思いました。 Linuxではどのようなアルゴリズムでシャドウバスワード を作り、パスワードの認証をしているのでしょうか。 つまり、簡単にいうとPerlでシャドウパスワードを使った Linuxユーザーのパスワード認証と パスワード変更ができないか、ということなのです。 また、Perlでシャドウパスワードなど作らなくても system()などを使ってLinuxのコマンドを使えば 各ユーザーの認証やパスワードの変更がブラウザでできるという場合は、 教えていただけないでしょうか。 どうかご教示ください。よろしくお願いします。

専門家に質問してみよう