2009-04-04 6 views
1

データベース管理システムとしてSQLiteを使用するPHPアプリケーションを開発していますが、MySQLとPostgreSQLなどは代替ではありません(pgsqlを本当に使いたいですが)頭痛も同様です。 今や多くの人が共有ホスティングを使用しています。その多くは、htdocsディレクトリへの直接FTPアクセスしか提供しませんが、それ以上のものはありません。つまり、顧客はSQLite-Database-Fileをhtdocsの中に置く必要があります。つまり、世界中にアクセス可能で誰でもダウンロードできます。HTTPアクセスからフラットファイル(sqlite db)を保護する最もサポートされている方法は?

お客様に何らかの保護を提供する最も簡単な方法は、単純であり、すべてのHTTPサーバーでもサポートされていますか?

答えて

4

.htaccessファイルを使用し、外部からアクセスできないようにデータベース名をロックダウンすることができます。多くのサーバはすでに "。"で始まるすべてのファイル名に対してこれを行います。もちろんこれはApacheでも動作しますが、他のWebサーバーの修正が必要です。

あなたの最善の策は、実際にはhtdocsの上にホストできるように設定することです。可能であれば、ドキュメントルートをチェックし、sqliteファイルを上位ディレクトリに移動するインストールスクリプトを使用することができます。

残念ながら、sqliteはWebサーバーと同じユーザーによって読み書きされるため、外部アクセスから簡単にロックする方法はありません。それを隠して動かすことは、私が考えることができる唯一の真の解決策です。

0

Apache Webサーバーの場合は、.htaccessファイルを使用します。私はIIS上でそれを行う方法がわかりません。

私は最初に、index.htmlファイルまたはそれに相当するものをブラウザにリストするディレクトリを避けるために置くべきだと思います。名前とパスがわかっていれば、そのファイルにアクセスすることはできませんが、どのWebサーバーが使用されているのかわからない場合は、何も表示されません。 (私は全体の実行したLinuxインストール用)デフォルトでは

4

、Apacheが実際にブロック直接提供されることから.htで始まるもの:

<Files ~ "^\.ht"> 
    Order allow,deny 
    Deny from all 
</Files> 

をあなたではなくあなたのためにsqlite.dbのようなファイル名を使用したい場合データベースファイル、そしてあなたは、このルールを使用して、それをブロックすることができます:

もちろん
<Files ~ "\.db$"> 
    Order allow,deny 
    Deny from all 
</Files> 

は、ほとんどのホスティングプロバイダにこのルールを実装するためには、ルールを含む.htaccessファイルを配布する必要があります。 * NIIXディレクトリリスト(またはFTPクライアント)にデフォルトでは表示されないため、時々見逃すことがあります。

共有ホスト環境でMicrosoft IISサーバーに使用できる類似のタイプのルールは認識していません。

+0

前述のように、ほとんどの共有ホスティング環境では、ルートディレクトリから移動する機能はサポートされていません。そして、.htdatabase.sqliteのようなデータベースの名前は、かなり汚いハックのようです。 –

+0

はい、に問題があります。どんなファイルでも、* NIXディレクトリリスト(FTPクライアントを含む)に隠されているため、時々見逃されることがあります。もちろん、.htaccessファイル内で(それを推測して)database.sqliteという名前のファイルはすべて拒否できますが、.htaccessファイル自体は見落とされる可能性があります。 – yukondude

2

使用されているすべてのHTTPサーバーソフトウェアで機能する保護はありません。あなたができる最善の方法は、使用されているWebサーバーに関係なく、文書ルートの外に移動することです。

実際にファイルがドキュメントルート内で処理されないようにするには、サーバーソフトウェアに関する知識と構成の変更が必要です。

関連する問題