最近見かけるほとんどのWebアプリは何らかの形でDBと共稼動しています。
私は今までDBを本格的に触ったことがないので分からないのですが「DBを使うメリット」とはいったい何なのでしょうか?
例えば会員サイトを構成した場合、会員に個人情報を登録してもらうことにします。この場合、WWW上から見れないディレクトリにログをためればいいのではないでしょうか?読み込ませる場合も<>かなにかで区切れば何の問題もないように思えます。最近ではSQLインジェンクションなどの攻撃も目立ちDB関連による個人情報流失のニュースをよく目にします。
どうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
まず回答の前に
>なぜかと申しますと、ntel_404が仰った、ログ方式のデメリットは
敬称が抜けていましたね、ntel_404さん申し訳ありません。
訂正とお詫びをいたします。
>ここが、ちょっと理解できません。どうしてログ形式だとはるかに危険なんでしょうか?
さて、こちらの件に関してですが、
ログ方式の場合、ざっと考えて以下のような脆弱性が考えられます。
・共有サーバの場合、適切なセキュリティ設定を「サーバ管理者が」行わないと
データファイルが別の共有サーバ利用者から閲覧できる。
・WEBサービスの実行権限(UNIXならnobody等)が奪取できる脆弱性が見つかった場合、
データファイルが閲覧できることと同義である。
・WWW上から見れるディレクトリにデータファイル置いた場合、適切に設定を行わないと
誰でもデータが見れてしまう。
・スクリプト言語の脆弱性が見つかった時、データファイルの閲覧が出来る
可能性が高い。
こんなことろでしょうか。
まあぶっちゃけて言ってしまえばデータベースを使えば以上に上げたものが完璧に防げるかというと
全然そんなことはありません。
しかし以上に上げた脆弱性の特徴として「WEBサービス」に何らかの問題ある場合
脆弱性になるということが言えます。
データベースを使用しても仰るようにSQLインジェンクション等、脆弱性はあります。
しかしそれでもデータベースのインターフェースはあくまでも「WEBサービス」であり
このインターフェース部分(具体的にはPHPならpg_connect,pg_fetch等)に対しての脆弱性を防げば
データの機密性は守れる、ということが言えます。
つまり
ログ形式の場合WEBサービスの脆弱性がログ形式のデータ流出に繋がりやすいのに対して
データベースの場合WEBサービスの脆弱性がデータ流出に、「比較的」繋がりにくいということが言えます。
大変ご丁寧な回答ありがとうございました。
なるほど、そんな脆弱性が考えられますね。確かにログの場合、ログ自身は制限できないので見れる状態にあれば見れてしまうということですが、DBは見せる対象を選ぶためその分安全だというわけですね。やっと理解できました。ありがとうございました。
PS:ちなみに私のIDはntel_404ではなくIntel_404ですww
No.4
- 回答日時:
DBのコアコンピタンスを外部活用するため
速い、簡単、技術が共通かしている(SQL,Oracleももう一般技術)
バグが少なくなっている、DB単体は常に進化している。
個別で作成していたら、かなわない
No.3
- 回答日時:
そのデータを同時に使用するアプリケーション(ロードバランシングを含む)が複数存在する場合は、どうしてもDBにしなければ対応できません。
あとデータに関する保守やパフォーマンスチューニングにコードを書く必要が無くなるので開発の生産性が向上します。
SQLインジェクション対策はDBプログラミングの基本です。
基本の出来ていないプログラマーがいること自体が問題ではないでしょうか?
回答ありがとうございました。
>SQLインジェクション対策はDBプログラミングの基本です。
基本の出来ていないプログラマーがいること自体が問題ではないでしょうか?
それが最近ではできていなのですね。これが。プロが開発したアプリでもやはり脆弱性は存在するものですから。
No.1
- 回答日時:
>WWW上から見れないディレクトリにログをためればいいのではないでしょうか?
について、
結論から言うとその通りです。
実際私も自分の趣味でプログラムを作る分には、そういった方法でやっていますしそれで
何か弊害があるかというと特にはありません。
しかし仕事で、かつある程度の規模のサイトを複数人で開発する際にはデータベースを
使わないという選択肢は私としてはありえません。
なぜかと申しますと、ntel_404が仰った、ログ方式のデメリットは
・複数人で開発する時、データの仕様(区切り文字、何列目に何のデータを入れるか)等
全てのメンバーが把握していないとプログラムを開発できない。
また、一度決めた仕様を容易に変更することは出来ない。
・ファイルが壊れる可能性がある。
・データ量が増えたとき(40000件より上くらい)パフォーマンスを改善する手段が
プログラムを改善する以外に無い。
・セキュリティ的に脆弱である。
等だと思います。
勿論この辺りの問題はプログラムを作りこめば解決は出来ます。
しかしこの辺りの問題は、商用クラスのプログラムではほとんど共通の問題です。
ならロジックとは別に、データを管理する仕組みを独立して提供しよう、ということで
開発されたのがデータベースです。
後、
>最近ではSQLインジェンクションなどの攻撃も目立ちDB関連による個人情報流失のニュースをよく目にします。
に関してはログ方式のほうが遥かに危険だということを認識しておいてください。
なるほど、やっと理解できました。データを別に管理し後の変更にも即急に対応できるようにするためにですね。
>>最近ではSQLインジェンクションなどの攻撃も目立ちDB関連による個人情報流失のニュースをよく目にします。
>に関してはログ方式のほうが遥かに危険だということを認識しておいてください。
ここが、ちょっと理解できません。どうしてログ形式だとはるかに危険なんでしょうか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- IT・エンジニアリング ドメイン駆動設計の値オブジェクトについて質問 1 2023/05/13 02:50
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(セキュリティ) 匿名チャットアプリでの知られたくない会話 個人情報について 1 2023/03/29 18:08
- ハッキング・フィッシング詐欺 スマホアプリのトラッキング 個人情報について 5 2023/03/31 08:16
- その他(セキュリティ) 匿名チャットアプリ トラッキング 個人情報について 1 2023/03/29 20:35
- SQL Server SQL ServerでDBを構築。これは開発? 4 2022/05/28 14:10
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- その他(セキュリティ) 匿名チャットアプリのトラッキングについて。顔写真や個人情報の漏洩はあるのか。 2 2023/03/28 00:00
- その他(悩み相談・人生相談) 個人情報の削除に関して 2 2023/04/12 17:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
utf8bomとutf8mb4の違いがいま...
-
あるDBから別のDBのテーブルをs...
-
mySQLのデータベースにhtmlのコ...
-
バッチファイルではパスワード...
-
SQLServerのselect文でデータ数...
-
sql merge文について
-
データベースの複製の仕方(mysql)
-
niftyのラクーカンでのphpMy...
-
MySQL4.1系でPHPが文字化けして...
-
Mysqlのデータベースのリンク
-
PHP Myadmin の日本語専門書籍...
-
データベースファイル(.db)を開...
-
PL/SQLをWindowsのBATファイル...
-
PL/SQLで@ファイル名が反応しま...
-
create databaseがうまくいきま...
-
同じSQL文で極端に検索が遅くな...
-
作成したレコードセットのCSV出...
-
sql*loader 数値のロード
-
sqlplus で テキストファイルに...
-
数字で「そ」と「り」
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるDBから別のDBのテーブルをs...
-
SQLServerのselect文でデータ数...
-
mySQLのデータベースにhtmlのコ...
-
Mysqlのデータベースのリンク
-
バッチファイルではパスワード...
-
MySQL4.1系でPHPが文字化けして...
-
データベースの複製の仕方(mysql)
-
データベースのパンク
-
Amazon.comの「MARC」データベ...
-
mysqlデータベース内のuserテー...
-
Mysql5.0→5.5にアップグレード
-
「utf8mb4_general_ci」はMAMP...
-
どの程度のデータベースなら、c...
-
phpMyAdminのSQL文実行エラー
-
データベースに配列を格納する
-
phpmyAdminでmySQLのdumpデータ...
-
MySQLデータベースリカバリ文字...
-
MySQL4.1以上で、機種依存文字...
-
データベースを使うメリットとは?
-
MySQLからのデータ取得で日本語...
おすすめ情報