ほとんどのHTTPアクセスからフラットファイル(sqliteのDBを)保護する方法をサポートされていますか?
質問
私は、データベース管理システムとしてのSQLiteを使用するPHPアプリケーションの開発(私は本当にpgsqlのを使用したいと思いますが)、MySQLとPostgreSQLのなどの代替ではないのです似-headache。 今では多くの人々が共有ホスティングを使用しており、それらの多くは唯一ではなく、それ以上、のhtdocsディレクトリへの直接のFTPアクセスを提供します。つまり、世界にアクセス可能であり、誰もがそれをダウンロードすることができますことを意味し、顧客が自分のhtdocs内のSQLiteデータベース--ファイルを配置する必要がありますを意味します。
シンプルでも、すべてのHTTPサーバでサポートされていることを、顧客にそのからの保護のいくつかの種類を与えるための最良の方法は何ですか?
解決
あなたは、.htaccessファイルを使用して、データベース名をロックダウンすることができます。多くのサーバはすでに「」で始まるすべてのファイル名のためにこれを行います。これはもちろん、Apacheの上で動作しますが、あなたはまだ他のWebサーバのための修正が必要になります。
あなたの最善の策は、実際にそれがhtdocsに上にホストすることができるようにそれを設定することです。たぶん、あなたはドキュメントルートをチェックし、可能ならば上位ディレクトリにsqliteのファイルを移動し、インストールスクリプトを使用することができます。
sqliteの読み取りおよびWebサーバと同じユーザによって書かれているので、残念ながら、外部からのアクセスからそれをロックダウンする簡単な方法はありません。それを非表示にし、移動それは私が考えることができる唯一の真の解決策はあります。
他のヒント
使用されているすべてのHTTPサーバ・ソフトウェア上で動作する保護はありません。あなたができる最善のは、それが提供すべきではありません使用されているウェブサーバとしてかかわらず、ドキュメントルートの外に移動することです。
実際にはドキュメントルート内で提供されてからファイルを保護するには、サーバーソフトウェアとその設定の変更についての知識が必要になります。
(私は全体の実行したLinuxインストール用)デフォルトでは、直接提供されることから.ht
で始まり、Apacheの実際のブロック何かます:
<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サーバのために使用することができるルールの任意の同様のタイプを認識していないよ。
これは、.htaccessファイルを使用し、次にApache Webサーバになります。私はIIS上でそれを行う方法がわからないんだけど。
私が最初の事のようにブラウザでディレクトリをリスト防ぐために、空のindex.htmlファイルまたは同等のものを置く必要がありますね。名前とパスがわかっていれば、そのファイルにアクセスすることを防ぐことはできませんが、上のように何が起こっているかのWebサーバー、あなたがわからない場合、それは何もないよりはましだ。