• ベストアンサー

ファイル上のパスワードの暗号化

WebでMySQLに接続するとき $hostname = "localhost"; $database = "mydb"; $username = "myname"; $password = "mypass"; などとファイルに書いて接続しますが、 $password = "mypass"; のmypassの部分を暗号化する方法はないでしょうか? MySQL側ではパスワードは暗号化されていますが その文字列をそのままいれて $password = "6f8c114b58f2ce9e"; としても当然ですが接続できませんでした。 宜しくお願いします。

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

mypassをプログラムで暗号化することは可能です。ただし、そうすると、その暗号化に使う鍵をどう管理するのか?という問題になり、どうどうめぐりです。とはいえ、暗号化しておくと、攻撃者がMySQLのパスワードを知るためにはちょっとした手間が必要なので、多少の時間稼ぎにはなります。 他にも、バイナリ化など色々な方法がありますが、基本的には上記と同じで、多少の時間稼ぎの効果しかありません。なので、この手のパスワードの隠蔽に力を入れるよりも、それ以前の基本的な安全対策に力を注いだ方がよいと思います。

gorogoro_01
質問者

お礼

暗号化した状態で保存しておいて、データベースに接続するたびにプログラムで復号化はできそうですね。 でもあまりそうする事例を聞かないのはおっしゃる理由からなのですね。 有り難うございました。

関連するQ&A

  • PHP+ApacheでMySQLに接続できない。プロンプトからは可能

    以下のようなコードでmysqltest.phpというファイルを作成しました。 これを php -f mysqltest.php とやると成功します。 しかし、ブラウザでhttp://パス/mysqltext.phpとやると失敗します。 双方がどう違うのか教えていただけないでしょうか。 以下コードです。 ----------------------- <html> <body> <?php $hostname = "localhost:/var/lib/mysql/mysql.sock"; $name = "root"; $password = "pass"; printf( "hostname:%s<br>\n" , $hostname ); printf( "username:%s<br>\n" , $name ); printf( "password:%s<br>\n" , $password ); mysql_connect($hostname, $name, $password ) or die('cannot connect to database'); ?> </body> </html> ---------------------------------- 単に「ホスト:ポート」「ユーザネーム」「パスワード」を指定してconnectしているだけです。 コマンドラインから実行すると成功します ---------------------- <html> <body> hostname:localhost:/var/lib/mysql/mysql.sock<br> username:root<br> password:komaba<br> </body> </html> ---------------------------- ブラウザで実行すると失敗します。 ----------------------------- hostname:localhost:/var/lib/mysql/mysql.sock username:root password:pass cannot connect to database -----------------------------

  • MySqlのパスワードに「"」が含まれた場合の扱い

    MySqlのパスワードに「"」が含まれています。 このMySqlをWindowsから呼び出す方法を教えてください。 パスワード部分を対話式で入力するのはできます。 バッチ処理でアクセスする方法が知りたいです。 なお、シェル(バッチ)ファイルにパスワードを記述するのはセキュリティ的に云々の話は結構です。 例 ユーザー:user1 パスワード:aa"bb データベース:database1  ↓このようなパスワードがセットされています。 SET PASSWORD FOR user1@localhost=PASSWORD('aa"bb'); linux(bash)からは普通にアクセスできます。  mysql --database database1 -u user1 --password='aa"bb' Windows(dos)からはエラーになります。  mysql --database database1 -u user1 --password='aa"bb' というかそもそも「abcd」のような普通のパスワードもシングルクオートするとダメです。  mysql --database database1 -u user1 --password='abcd' ・・・ ×  mysql --database database1 -u user1 --password=abcd ・・・ ○ なので裸で記述してみますが  mysql --database database1 -u user1 --password=aa"bb これは当然ダメです。 こんなことしてみましたが  mysql --database database1 -u user1 --password=aa^"bb ダメでした。 何か方法ありませんか?

    • ベストアンサー
    • MySQL
  • 管理者がパスワードのユーザー名で管理ページへログインできるようにしたい

    管理者がパスワードのユーザー名で管理ページへログインできるようにしたいのですが、どこの部分に ユーザーIDやパスワードを設定すれば良いのかわかりません;_;(長いので所々はしょってます) どなたか教えてください。 $username=isset($_POST['username'])?$_POST['username']:""; $password=isset($_POST['password'])?$_POST['password']:""; $database_name=isset($_POST['database_name'])?$_POST['database_name']:""; $database_host=isset($_POST['database_host'])?$_POST['database_host']:"localhost"; $database_username=isset($_POST['database_username'])?$_POST['database_username']:""; $database_password=isset($_POST['database_password'])?$_POST['database_password']:""; $product_code=isset($_POST['product_code'])?$_POST['product_code']:"";      $server_path=str_replace("\\","\\\\",$server_path); } /*else if (file_get_contents("http://www.bpowerhouse.com/bph_adminpanel/pr_validate.php?code=".$product_code)!=1) { echo "<span style='color:red;'>Your product code is wrong!</span><br/>"; }*/ else { if(is_writable("includes/")){ $f=@fopen("includes/passwd.inc.php","w+"); $database_inf='<?php $DbHost = "'.$database_host.'"; // The host where the MySQL server resides $DbDatabase = "'.$database_name.'"; // The database you are going to use $DbUser = "'.$database_username.'"; // Username $DbPassword = "'.$database_password.'"; // Password $server_path= "'.$server_path.'"; ?>'; i

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

    パスワードを暗号化するにはphp関数などでハッシュ化させてからINSERTするしかないのでしょうか? MYSQL自体に現在INSERTされている文字列をハッシュ化させる方法はないでしょうか?

    • ベストアンサー
    • MySQL
  • PerlでMysqlのデータベース、テーブル作成

    はじめまして。 perlからMysqlのデータベースやテーブルを作成したいと思っております。 webを検索してみたのですが、どれもデータベースに接続してから、データの操作(挿入や削除など)をするものばかりで、データベースの作成などが見つかりません。 perlからデータベースの作成などは出来ないのでしょうか?また、出来るのでしたら、どのように書けばいいのでしょうか? 以下は、データベースに接続する場合です。 use DBI; $database="testdata"; $hostname="localhost"; $user = "aaa"; $password = "test"; $dsn="DBI:mysql:database=$database:host=$hostname"; $dbh = DBI->connect($dsn,$user,$password)||die $DBI::error; 宜しくお願いします。

  • コマンドプロンプトからMySQLに接続できない

    こんばんは。 スタート→すべてのプログラム→MySQL→MySQL Server 5.0→MySQL Command Line Client からパスワードを入力するとMySQLに接続できるのですが、コマンドプロンプトから mysql -u username -p を実行してしてパスワードを入力すると ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES) と表示されて接続できません。 コマンドプロンプトから接続するにはどうすればいいのでしょうか。 宜しくお願い致します。

  • データベースに登録してあるパスワードを画面に表示

    データベース(MYSQL)に登録してあるパスワードを暗号化(ハッシュ化)して保存してあります。 それをPHPに表示させる際どのようにもとのパスワードに戻して表示させるかがわかりません。 もとのパスワード abcd とする。 ハッシュ化したものを仮に123456789とする。 データベース上では123456789となっているが PHP上ではabcdとパスワードを表示させる方法がわかりません。 やりたいのは、 PHPのシステムにログインしている状態で別のシステムにリンクで飛んだ際、 「ユーザ」「パスワード(abcd)」で自動ログインさせたいのです。 ※ユーザは暗号化していないので「ユーザ」データを引き継いでいく事ができるのですが パスワードが暗号化されている為、どのように表示させたら良いのかが分からないのです。 <a target="_blank" href="http://192.***.**.****/●●●/portal/?action=ALJLoginUser&username=<?php echo htmlspecialchars($_SESSION['GO_SESSION']['username']); ?>&password=<?php echo htmlspecialchars($_SESSION['GO_SESSION']['password']); ?>" > 上記ですと]['username']は表示できますが['password']は空になってしまいます。 どのようにしたら良いのでしょうか? どうぞ宜しくお願い致します。

  • MYSQL接続のパスワードの暗号化について

    現在、共有レンタルサーバでMYSQLとPHPを使用したシステムを製作しています。 使用しているサーバは、SSHでの接続ができるのですが、これが他のユーザーのディレクトリのファイルを見ることができてしまうのです。 サーバ会社にそのこと問い合わせたら仕様上変更ができないとのこと。 対策として必要に応じてパスワード等は適宜暗号化してくださいというのですが…。 現在、MYSQLに接続するためのパスワードをテキストファイルでアップしているのですが、今までは他のサーバでシステムを作るとき、.htaccessを使ってブラウザからはアクセスできないようにして対応していたのですが、SSHで接続されるのでは意味がありません。 MYSQLに接続するパスワードを不可逆の暗号化しておいて、そのデータでMYSQLに接続する、なんてことができるのでしょうか? 可逆化が可能な暗号であれば、接続方法は思いつくのですが、PHPスクリプトも他人に読まれる可能性があるため、それでは意味がありません。 または、暗号化しなくても、パスワードファイルはSSHからの接続では閲覧できないようにしたいのです。(この場合、自分でもSSHでは閲覧できなくてもかまいません。) OS:TurboLinux Appliance Server2.0(TLAS2) PHP:4.4.8 mysql:4.0.20 ご存知の方がおられたら、教えて頂けたら幸いです。

    • 締切済み
    • PHP
  • phpBB インストール手順となるmySQL database

    今、phpBB形式のBBSを作成しようと試みています。 その時に問題がありましたので、もしどなたかお手助けしてくれる方、 お答お願いします。 phpBBをDLしインストする時install/install.phpに アクセスし、 Database Server Hostname / DSN Your Database Name Database Username Database Password を入力後、何かのミスによって下記のように表示されました。 「phpBB : Critical Error Could not connect to the database」 今、参考にhttp://all.netgamers.jp/adcat2.html のサイトをみて行っています。 今、サンプルとして作成しています。 http://samplee.phpnet.us/install/install.php が今行っているサイトURLです。 MySQL Hostname: sql2.phpnet.us MySQL Username (FTP/SQL): pn_640350 MySQL Password (FTP/SQL): sarada がデータベースの内容だと思うのですが。何がいけないのでしょうか?

  • 接続しているデータベース名を得る

    PHP4とMySQLを使用しています。 現在接続しているデータベースの名前を取得することはできますか? <?php mysql_connect('dbhost', 'username', 'password'); mysql_select_db("my_database") ・・・・・・・・・・ ?> としたときに、「my_database」を抜き出したいと思います。 よろしくお願いします。

    • 締切済み
    • PHP