- ベストアンサー
データベースを使うメリットとは?
最近見かけるほとんどのWebアプリは何らかの形でDBと共稼動しています。 私は今までDBを本格的に触ったことがないので分からないのですが「DBを使うメリット」とはいったい何なのでしょうか? 例えば会員サイトを構成した場合、会員に個人情報を登録してもらうことにします。この場合、WWW上から見れないディレクトリにログをためればいいのではないでしょうか?読み込ませる場合も<>かなにかで区切れば何の問題もないように思えます。最近ではSQLインジェンクションなどの攻撃も目立ちDB関連による個人情報流失のニュースをよく目にします。 どうぞよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まず回答の前に >なぜかと申しますと、ntel_404が仰った、ログ方式のデメリットは 敬称が抜けていましたね、ntel_404さん申し訳ありません。 訂正とお詫びをいたします。 >ここが、ちょっと理解できません。どうしてログ形式だとはるかに危険なんでしょうか? さて、こちらの件に関してですが、 ログ方式の場合、ざっと考えて以下のような脆弱性が考えられます。 ・共有サーバの場合、適切なセキュリティ設定を「サーバ管理者が」行わないと データファイルが別の共有サーバ利用者から閲覧できる。 ・WEBサービスの実行権限(UNIXならnobody等)が奪取できる脆弱性が見つかった場合、 データファイルが閲覧できることと同義である。 ・WWW上から見れるディレクトリにデータファイル置いた場合、適切に設定を行わないと 誰でもデータが見れてしまう。 ・スクリプト言語の脆弱性が見つかった時、データファイルの閲覧が出来る 可能性が高い。 こんなことろでしょうか。 まあぶっちゃけて言ってしまえばデータベースを使えば以上に上げたものが完璧に防げるかというと 全然そんなことはありません。 しかし以上に上げた脆弱性の特徴として「WEBサービス」に何らかの問題ある場合 脆弱性になるということが言えます。 データベースを使用しても仰るようにSQLインジェンクション等、脆弱性はあります。 しかしそれでもデータベースのインターフェースはあくまでも「WEBサービス」であり このインターフェース部分(具体的にはPHPならpg_connect,pg_fetch等)に対しての脆弱性を防げば データの機密性は守れる、ということが言えます。 つまり ログ形式の場合WEBサービスの脆弱性がログ形式のデータ流出に繋がりやすいのに対して データベースの場合WEBサービスの脆弱性がデータ流出に、「比較的」繋がりにくいということが言えます。
その他の回答 (3)
- iekarapin
- ベストアンサー率34% (9/26)
DBのコアコンピタンスを外部活用するため 速い、簡単、技術が共通かしている(SQL,Oracleももう一般技術) バグが少なくなっている、DB単体は常に進化している。 個別で作成していたら、かなわない
お礼
回答ありがとうございました。
- 7marine
- ベストアンサー率36% (59/160)
そのデータを同時に使用するアプリケーション(ロードバランシングを含む)が複数存在する場合は、どうしてもDBにしなければ対応できません。 あとデータに関する保守やパフォーマンスチューニングにコードを書く必要が無くなるので開発の生産性が向上します。 SQLインジェクション対策はDBプログラミングの基本です。 基本の出来ていないプログラマーがいること自体が問題ではないでしょうか?
お礼
回答ありがとうございました。 >SQLインジェクション対策はDBプログラミングの基本です。 基本の出来ていないプログラマーがいること自体が問題ではないでしょうか? それが最近ではできていなのですね。これが。プロが開発したアプリでもやはり脆弱性は存在するものですから。
- haru1234
- ベストアンサー率47% (22/46)
>WWW上から見れないディレクトリにログをためればいいのではないでしょうか? について、 結論から言うとその通りです。 実際私も自分の趣味でプログラムを作る分には、そういった方法でやっていますしそれで 何か弊害があるかというと特にはありません。 しかし仕事で、かつある程度の規模のサイトを複数人で開発する際にはデータベースを 使わないという選択肢は私としてはありえません。 なぜかと申しますと、ntel_404が仰った、ログ方式のデメリットは ・複数人で開発する時、データの仕様(区切り文字、何列目に何のデータを入れるか)等 全てのメンバーが把握していないとプログラムを開発できない。 また、一度決めた仕様を容易に変更することは出来ない。 ・ファイルが壊れる可能性がある。 ・データ量が増えたとき(40000件より上くらい)パフォーマンスを改善する手段が プログラムを改善する以外に無い。 ・セキュリティ的に脆弱である。 等だと思います。 勿論この辺りの問題はプログラムを作りこめば解決は出来ます。 しかしこの辺りの問題は、商用クラスのプログラムではほとんど共通の問題です。 ならロジックとは別に、データを管理する仕組みを独立して提供しよう、ということで 開発されたのがデータベースです。 後、 >最近ではSQLインジェンクションなどの攻撃も目立ちDB関連による個人情報流失のニュースをよく目にします。 に関してはログ方式のほうが遥かに危険だということを認識しておいてください。
お礼
なるほど、やっと理解できました。データを別に管理し後の変更にも即急に対応できるようにするためにですね。 >>最近ではSQLインジェンクションなどの攻撃も目立ちDB関連による個人情報流失のニュースをよく目にします。 >に関してはログ方式のほうが遥かに危険だということを認識しておいてください。 ここが、ちょっと理解できません。どうしてログ形式だとはるかに危険なんでしょうか? よろしくお願いいたします。
お礼
大変ご丁寧な回答ありがとうございました。 なるほど、そんな脆弱性が考えられますね。確かにログの場合、ログ自身は制限できないので見れる状態にあれば見れてしまうということですが、DBは見せる対象を選ぶためその分安全だというわけですね。やっと理解できました。ありがとうございました。 PS:ちなみに私のIDはntel_404ではなくIntel_404ですww