質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1258閲覧

mysql_connectのセキュリティーに関して

behoimi80

総合スコア62

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2017/12/06 00:06

PHPのソース内でmysql_connectでMySQLに接続をしていますが、ユーザー名やパスワードを直接コード内に記述しています。

セキュリティー上問題ないのでしょうか?
また、対策をするとしてどのような処理が必要なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

結論から言って、問題ないとは言い切れないが、それに代わるあまり良い方法もなく、ソースコード内にハードコーディングするという方法は広く行われています。WordPress等が代表例ですが、これに限りません。
一般的なセキュアコーディング規約では、ソースコードに機微情報をハードコードするなと書かれています。例えば下記です。

MSC03-J. センシティブな情報をハードコードしない

ハードコードする代わりに、「以下の適合コードでは、セキュアなディレクトリに保存された設定ファイルからユーザ名とパスワードを読み取っている」と「良い例」が書かれていますが、これはまやかしだと思っています。セキュアなディレクトリって何よということですね。ウェブアプリからアクセスできる権限があれば、通常攻撃者からもアクセスできるからです。なので、パスワードを別ファイルにしても、あまり効果は見込ません。OS側で特別な仕掛けでもあればいいのですが、ウェプアプリから使える仕掛けは見たことがありません。強いて言えば、ハードウェアセキュリティモジュール(HSM)ですね。興味があれば検索してみてください。

なお、セキュリティ上問題というのは、万一サーバーに侵入された場合のはなしであって、侵入されない限りは問題ありません。なので、侵入された場合にデータベースのパスワードが見られてしまうことは、通常は許容しているわけです。

投稿2017/12/06 00:41

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

behoimi80

2017/12/06 01:32

ockeghem様 返信ありがとうございます。 確かにサーバーに侵入されたら防御しようがないですね。 ハードウェアセキュリティモジュール(HSM)も含め、未然に防ぐ対策強化も調べてみます。 ありがとうございました。
guest

0

セキュリティー上問題ないのでしょうか?

問題はありますが、入力したユーザーやパスワードでmysqlにログインすることは
煩雑になるためあまり現実的な運用ではないので、基本的にスタティックに書かれた
テキスト情報を元にログインすることになり、多かれ少なかれ
「直接コード内に記述」するのと近い運用をすることになります。
もちろん編集ユーザーなどの細かい情報をユーザーが知る必要はないため
接続情報を半自動で渡してあげるのが一般的でしょう。
ソースが流出したときのことを考えて心ばかりの対策として
ユーザー情報は公開ディレクトリには置かないようにしましょう。

とはいえ・・・mysql_connectをご利用のことですが
mysql_*関数はプレースホルダーも利用できないので、セキュリティ云々を
気にするのであれば選択肢からは外れると思います

投稿2017/12/06 00:23

yambejp

総合スコア114757

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

php-mysql をつかわずに php-mysqli を利用しましょう。
各サイト毎に php.ini( htaccess でもいいが ) を用意して以下を定義しましょう。

KEYDEFAULT VALUE
mysql.default_portNULL
mysql.default_socketNULL
mysql.default_hostNULL
mysql.default_userNULL
mysql.default_passwordNULL

投稿2017/12/06 00:22

編集2017/12/06 00:23
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問