1

フロントエンドが完了した、私が働いている会社のウェブサイトを構築しています。現在、このサイトは JSON ファイルから読み取った情報からデータを取り込みます。

私はもうすぐこの仕事を辞めますが、他の従業員が JSON データを適切に読み書きする方法を知らなくてもサイトを更新できるように、サイトを離れたいと考えています。だから私は更新を行うための非常に単純なサイトを書いています(現在ライブサイトにあるプロジェクトをリストし、ユーザーがプロジェクトを追加したり、プロジェクトを削除したり、プロジェクトを並べ替えたりできるようにします。)データはすべてテキストであり、いくつかの基本的なサニタイズを行っていますサーバーを呼び出して書き込む前の JS。さらに、私は.htaccessを使用して、サイトのこの部分にアクセスするために従業員にログインを要求しています。

これで、実際に書き込むデータベースが必要になるところまで来ました。私たちのウェブサイトは OSX サーバーから実行されているため、既に SQLite3 がインストールされています。ここでStackOverflowを読んだところによると、UN/PW アクセスを必要としない限り、または 100k+ ヒットまでスケールアップする必要がない限り、SQLite はライブ データベースとして問題なく動作するようです。(当社は小さな会社です。1 日に 2 ~ 3 件のヒットがあります)。

データベースに接続して書き込む PHP ページのセットアップを開始しましたが、サイレント エラーの後、Web サイトがアクセスするには、.DB ファイルにグループの RW アクセスが必要であることに気付きました。これは、データベースとそれを保持するディレクトリに対して、777ではないにしても、少なくとも444へのchmodを意味します(私は推測します)。サーバー管理を担当する上司にこの設定について尋ねたところ、彼はこれを行うのが苦手だと言いました。彼の懸念は理解できますが、他に何をすべきかわかりません。ファイルへの RW アクセスがなければ、これを機能させる他の手段がわかりません。

それで、私のオプションは何ですか?SQLite を放棄して、MySQL だけをインストールする必要がありますか? また、SQLite を使い続ける場合、セキュリティのベスト プラクティスは何ですか? バッチベースを設定する/データを暗号化する/データベースを非表示にするための、受け入れられている最良の方法はありますか?

ありがとう!

4

1 に答える 1

5

ここで混乱する可能性があるのは、Web アクセシビリティを使用した UNIX/Linux ファイルのアクセス許可です。

*NIX では、すべてのファイルが所有者とグループに属します。端末上のユーザーを含む、マシン上のすべてのプロセスは、グループ (または複数のグループ) に属するユーザーの下で実行されています。それがファイルのアクセス許可です。どのプロセスがどのファイルにアクセスできるかを制御します。ユーザーは、ファイルに対する直接的なアクセス許可 (ユーザー アクセス許可)、グループ メンバーシップによる間接的なアクセス許可、またはその他のアクセス許可を持つことができます。

これはすべて、Web ユーザーとは何の関係もありません。Web サーバーは、ポート 80 (またはその他の場所) で着信 HTTP 要求をリッスンするプロセスです。次に、これらの要求にどのように応答するかを決定します。この種のdo-I-respond-or-don't-Iは、ファイルのパーミッションとは何の関係もありません。Web サーバーには、許可する要求と拒否する要求に関する独自のルールがあり、ファイルのアクセス許可とは関係ありません。

Web サーバーがディスク上のファイルにアクセスしようとしている場合、ファイルのパーミッションが役割を果たします。Web サーバーは、通常、あるグループに属するユーザーとして実行されていますwww-data。つまり、Web サーバーは、アクセス許可を持つファイルを読み取り、書き込み、または実行できます。Web サーバーにファイルの読み取り権限がない場合、そのファイルを提供することはできません。しかし、Web サーバーがファイルへの書き込み権限を持っているからといって、Web サイトの訪問者がそのファイルに何らかの方法で書き込むことができるわけではありません。Web サーバーは Web 要求を処理しますが、ランダムなユーザーに直接ファイル アクセスを提供することはありません。

一般的な設定では、Web サーバーは として実行されていwww-dataます。着信要求により、Web サーバーは PHP スクリプトを開始します。これは、www-dataパーミッションを持つ子プロセスとしても実行されます。その PHP プロセスは、ファイルの読み取りまたは書き込みを行います。www-dataのアクセス許可を持つファイルのみを読み書きでき、スクリプトが何を読み書きするかを制御します

SQLite データベースを使用する場合は、そのファイルへのアクセス許可が必要です。通常、許可をできる限り分離したいのは事実です。ただし、この場合、www-dataユーザー (または PHP が実行されているもの) にそのファイルへのアクセス許可を与える必要があります。だから何?それ自体はセキュリティ上の欠陥ではありません。起こり得る最悪の事態は、アクセス許可を取得した攻撃者がwww-dataデータベースに書き込めることです。しかし、その前に、彼は他の多くのセキュリティ メカニズムを回避する必要があるため、その心配はほとんどありません。

于 2013-08-28T17:43:31.653 に答える