• ベストアンサー

会員制コミュニティサイトの、パスワードの自動生成プログラム・認証プログラムに関する質問です

■内容(全体の流れ) (1)メールアドレス等入力 (2)自動返信メールにて登録完了の通知 (3)パスワード申請URLにてパスワードを申請 (4)自動返信メールにて、パスワードを送付。 (5)ログイン画面で、ログインする。 (6)ログイン後は、会員専用のPDF文書がダウンロードできる。 この中の(5)で、正しいパスワードを入力しても「パスワードが間違っています」というエラー表示がでるようになりました。 ■問題解決に必要と思われる情報 1.パスワード生成は、<stdio.pl> CGI Standard Input Output Library Ver 3.36 2.不可逆のパスワード生成cryptを使っている?   print FILE "$Form{'mail'}:" . stdio'CryptString($passwd) . ":" . time . ":" . time . "\n"; 3.レンタルサーバを変更したら問題が発生した。またパスワード記録ファイルの文字数が変わった。 問題なし:ギガバイズ http://saya.g--z.com/ xxxxxx@**.com:l/nloYYiaSdi6:986364127:986364127 問題あり:CPI http://www.cpi.ad.jp/ xxxxxx@**.com:$1$LN$iBFSFm4u1KoaMoXXUB5xh.:1109749957:1109749957 ※xxxxxx@**.comは、メールアドレス ※ロリポップレンタルサーバでも問題なく動作した。 5.ユーザーに送られてくるパスワードの文字数は、8文字。 例:d8DHy4iy (3で記載したCPIで生成された、ユーザーへ送られたパスワード) 私の推測では、サーバを変えたことによりパスワードの暗号化の方法が変わり、認証の際に登録時のパスワードと相違が発生しているのではないか、と考えています。 対処法お分かりになる方がいらっしゃいましたら教えてください。 どうぞよろしくお願い致します。

  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

> サーバを変えたことによりパスワードの暗号化の方法が変わり、・・・ まさにその通りです。 今回の場合、 CPIの方でcryptが吐き出しているのが$1$で始まるMD5ですね。 ギガバイズの方はDESです。 よって、両者が吐き出すcrypt後の文字列が異なるために「パスワードが間違っています」になってしまうのでしょう。 対処法としては、 ・どちらか一方に統一 ・crypt関数を使わず別の方法を採る の二つがあります。 前者の方は、サーバーの仕様による違いなのでどうしようもないですが、 DESに統一する場合は、故 小塚 敦さんが作成されたライブラリを使用することができます。 http://mikeneko.creator.club.ne.jp/~lab/perl/des/ これを使った場合は、サーバーの環境を問わずDESで暗号化した形のものを常に取得することができます。 ただし、PurePerlである分、通常のcrypt関数を使うときよりもサーバーへの負担は高いです。 (単発ならいいですが連続使用する場合は注意が必要です) 後者の方法としては、 ・各種ハッシュ関数を使ったハッシュにして扱う ・パスワードをそのまま(生のまま)扱う があります。 ハッシュで使う場合は、お馴染みのMD5、SHA1をはじめとしてSHA256、384、512やRIPEMD160、256・・・等を使うことになります。 ただし、後者の二つは既存の記録ファイルから元のパスワードを導くことができないので、今回の場合は前者の「どちらかに統一」の方法を採ることになるでしょう。 (個人的なお奨めはハッシュを利用したものですが)

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

問題の原因は推測どおりサーバによる違いです。 参考URL1 stdio'CryptString の中身までみていませんが、 検索してみたところ、cryptがMD5で動作する環境でDES方式の暗号化を行うライブラリ(参考URL2)がありましたので、crypt関数を使っている部分をこのモジュールに差し替えればうまく動きそうな気がします。

参考URL:
http://tech.bayashi.net/pdmemo/crypt.html,http://mikeneko.creator.club.ne.jp/~lab/perl/des/

関連するQ&A

  • 認証アプリを利用したサイトが増えないのは何故?

    Google認証システム(Google Authenticator)でランダムに生成された6桁のワンタイムパスワードを利用して、2要素認証により、ログインできるサイトは私が利用しているサイトに限って言えば、AMAZON、CLUB JT、Microsoft Outlook.comブラウザーメールへのMSアカウントログイン時の3つのみです。Google認証アプリや他のアプリによる、ワンタイムパスワードによるログインが可能なサイトが増えないのは何故でしょうか?私が利用していないだけで沢山存在しているのでしょうか?

  • ワンタイムパスワード生成アプリ

    ある会社より社内向けオンラインショップの作成を依頼されました。自宅でPCまたはスマートフォンから利用したいということで、社内LANではなく、インターネット経由の利用になります。この社内向けオンラインショップの意図するところは、福利厚生の一環として、一部の商品を安く購入できることにあります。ここでやっかいなことは、社員がID・パスワードを知人等に教えて、社員以外に利用されてしまう可能性があることです。そこで社員以外は利用できないようにするための仕組みが必要になります(代理購入はできてしまいますが、それは仕方ないとします)。いろいろ調べて行き着いたのが、ワンタイムパスワードで接続認証させる方法です。ところがこの方法だと、通常はパスワード生成器が必要になり、利用者ごとに生成器の費用がかかってしまいます。 ここで疑問に感じたのですが、このパスワード生成器に相当するパスワード生成アプリを作成し、各クライアントの端末にインストールしておけば、パスワード生成器は不要になりますよね?たとえば、IDと時間をパラメータにしてパスワードを生成するアプリを作成しておけば、基本的には同じ事ができると思います。各OS用にアプリを開発する必要はありますが、一度作成してしまえば、その後の費用は必要なくなります。 あとはサーバー側の構築ですが、サイト内にPHP等でプログラムを作成しておけば、通常のレンタルサーバーでも簡易的な接続認証ができると思うのですが、この方法だとセキュリティ的に非実用的でしょうか?やはり別途認証サーバが必要になりますでしょうか? よろしくお願いします。

  • PHP会員サイト(認証機能)

    ログイン→(ID、パスワードで振り分け) 会員ページまたは管理者ページ 会員ページではブログやコメントなどを公開 (複数ページ有、各ページでID、パスワードのセッション確認) 管理者ページでは会員登録、削除、更新など (各ページでID、パスワードのセッション確認)) データベース MySQL 上記のような会員サイト(PHP)をお持ちの方いませんか? 無料もしくは格安で譲っていただける方いませんか? 無料でそのようなサイトがあれば教えて下さい。 (レンタルサーバーで使用可能なもの)

    • 締切済み
    • PHP
  • レンタルサーバー上の会員制サイトでできること

    会員制サイトを立ち上げたいのですが、次のようなことはレンタルサーバーで可能でしょうか?また、可能な場合はどこまでを自分で用意する必要があるのでしょうか? 1.会員がIDとパスワードを入力、送信すると、管理者に内容が通知されると同時にサーバー上のデータベースに登録される。 2.会員がメールアドレスを入力して送信すると、管理者からのメールが自動的に返信される。 3.会員がクレジット決済(ZERO等)を済ませると、管理者からのメールが自動的に返信される。

  • 会員制のサイトを作るには

    今、サイトを作ってるんですが、会員制にしたいんです。 イメージは、空メールを送るとURLが返ってきて、そこからIDとパスワードを登録して、毎回、ログインして利用すると、言う感じです。 携帯向けのサービスも予定しています。 なので、携帯対応がいいです。 CGIやPHPの設置は出来ます。 レンタルでも無料であれば、何でもいいです。 とにかく、無料でやりたいです。 よろしくお願いします。  

  • ログインID・パスワード認証時の大文字・小文字区別

    ASPにおいてログイン画面よりログインID・パスワードを入力した後、SQLサーバのDBを参照し存在する場合のみログイン成功としていますが、大文字・小文字は判別していません。 例えばDB上ではパスワードが「test」でも「TEST」と入力すればログイン成功となります。 大文字・小文字を区別して認証する方法はないでしょうか?? よろしくお願いします!!!!

  • g-mailが発信できませんが。

    g-mail を使っています。受信は問題なくできるのですが、発信とか返信の時、 「サーバーsmtp.gmail.com へのログインに失敗しました」と文字が出て、 「再試行」「新しいパスワードを入力」「キャンセル」の3択からどれかを選ぶように案内されます。新しいパスワードなんて知りませんし、キャンセルも能がないので「再試行」をクリックしますが、再び上記のような表示が出ます。 原因とか対策をお願いします。 国際メールをしているので、大変困っています。 よろしくお願いいたします。

  • BASIC認証式パスワード管理で質問

    お世話になります。 http://www.kent-web.com/pwd/pwmgr.htmlでPASSWORD MANAGERの設置をabcd.com(仮称)のxyzディレクトリにしようとしています。 レンタルサーバーでフルパスを教えてもらい '/home/abcd/public_html/abcd.com/xyz/にファイルを設置し、.htaccessはアクセスを制限するディレクトリmemberにおきました。 http://www.abcd.com/xyz/pwmgr.cgi?mode=checkでチェックしたところ 下記のように合格しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー チェックモード 会員ファイルパス OK! 会員ファイルパーミッション OK! アクセスログ (使用する場合)パス OK! アクセスログ (使用する場合)パーミッション OK! パスワードファイルパス OK! パスワードファイルパーミッション OK! sendmailパス OK! ロック形式 → mkdir ロックディレクトリ → ./lock ロックディレクトリパスOK! ロックディレクトリパーミッション OK! バージョン → PasswordManager v2.23 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー ところが、http://www.abcd.com/xyzと入力し、index.htmlに接続しようとすると、ユーザ名とパスワードを聞いてきますが、エントリーできません。init.cgiで設定した管理者用のパスワードの入力ではだめなのでしょうか?プロバイダで設定したパスワードでもだめでした。 どなたか教えてください。M(__)M

  • sshdでパスワード認証を禁止できない

    sshdでパスワード認証を禁止したいのですが、できません。 現在は、公開鍵認証でログインでき、パスワード認証でもログインできてしまう状態です。 ■やっったこと サーバー側から、「/etc/ssh/ssh_config」を以下のように修正 コメントアウトを外して、yesをnoに変更 【変更前】 # PasswordAuthentication yes 【変更後】 PasswordAuthentication no sshdのリスタート linux:/ # /etc/init.d/sshd restart Shutting down SSH daemon done Starting SSH daemon done 以下は、パーミッション700で、そのユーザーがオーナーになってます。 /home/ユーザー/.ssh /home/ユーザー/.ssh/authorized_keys2 ■状況 ・秘密鍵を使用したパスフレーズでログインできます。 ・パスワードでもログインできてしまいます。 ・PuTTYとWinSCPの2つで試しました。 パスフレーズとパスワードは、別の文字です。8桁 ■環境 サーバー側 ・SuSE Linux9.3 クライアント側 ・Windows2000 SP4 ・PuTTY Release0.58-jp20050503 ・WinSCP バージョン3.8.0(ビルド312) 宜しくお願いします。

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

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

    • ベストアンサー
    • PHP

専門家に質問してみよう