• ベストアンサー

セキュリティ上どうですか?

Linux上でMySQLとPHP4を使って以下のようなサイトを作ってます。 ・一般閲覧者:select(参照)のみ ・編集者:管理ページ(ベーシック認証付き)からのinsert、delete、updateのみ 上記のような条件を、rootユーザーにパスワードを設定し、全てPHPからのrootユーザーでの接続で行ってます。 こういった使用方法はセキュリティ上問題はあるのでしょうか?

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

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

#1です。 > 管理画面でSSLを使用すれば盗聴の可能性は低くなりますか? はい、盗聴は現実的には不可能になります。 > 一般の閲覧者も管理者も同じ外部からのアクセスと > なると思うのですが、管理画面の機能を考えると、 > その両者に対してDELETE、UPDATEは許す必要があり、 > そこはDBではなく、管理画面のユーザー認証などで > 対応するしかない これで考え方としては間違っていないと思います。 MySQLのユーザの考え方はご存知かと思いますが、rootはDBそのものに対しての 各種操作の権限を持っています。 アプリケーションの開発を行ううえでは、権限によるエラーが出ないので、 このようなユーザは非常に便利なのですが、単に特定の表のinsert/update/delete を行うだけであれば、rootである必要はありません。 その特定の表に対して、select/insert/update/deleteができるユーザを作成し、 そのユーザを”その表の管理者”として利用すればいい、ということです。 その特定の表の管理作業を任意の場所からやるとしたら、IPアドレスレベル での制限はかけられないでしょうが、DBに対する操作、つまりrootを利用する 操作はそうそう頻繁には発生しないでしょうから、アクセス元を制限して おいたほうがいいと思います。 具体的には、特定表管理者画面とroot画面を別々に用意し、後者にのみ IPアドレスでアクセス制限をかければいいのではないでしょうか。 #MySQL側でも、そのユーザがどこからアクセスできるかを制限することができます。 #私だったら、rootはローカル以外からはアクセスさせませんが....

puchi-mat
質問者

お礼

ご丁寧にありがとうございました。 今まで自分の中で曖昧だった部分がやっと理解できました。

その他の回答 (1)

回答No.1

こんにちわ。 ポリシーにもよりますが、問題がないとはいえません。 まず、管理画面の認証がベーシック認証とのことですが、ということは そのパスワードは平文でインターネット上を流れます。つまり、盗聴が可能です。 管理画面でDBのrootユーザのパスワードを入力させるのかどうかは文面から ではわかりませんが、rootパスワードがPHPに埋め込まれていると、一度 管理画面に入られてしまうと、あとはやられ放題になってしまいます。 #DBのrootユーザは何でもできてしまうので、DBの破壊も思うがままです。 簡単な対策としては、  ・管理画面へのアクセスをIPアドレスレベルで制限する  ・MySQLにもっと権限が低いユーザを作成し、そのユーザを利用する などがあると思います。

puchi-mat
質問者

補足

ありがとうございます。 更なる質問よろしいでしょうか? 1管理画面でSSLを使用すれば盗聴の可能性は低くなりますか? 管理画面からDBのrootパスワード入力はさせてなく、PHPに埋め込んでるのですが、仮に権限の低いユーザーで運用するとした上でですが、 2一般の閲覧者も管理者も同じ外部からのアクセスとなると思うのですが、管理画面の機能を考えると、その両者に対してDELETE、UPDATEは許す必要があり、そこはDBではなく、管理画面のユーザー認証などで対応するしかない?と考えてます。 この考え方は誤りでしょうか? 一般閲覧と管理担当の切り分けが可能な方法などがあるのでしょうか。 勉強しはじめたばかりなので、とんでもない間違いがあるのかもしれませんが、アドバイス頂けると嬉しいです。

関連するQ&A