2017-08-08 7 views
-1

サーバー側のコードにアクセスする必要がある重要なデータがある場合は、テキストファイルに保存することができます(例:data.txt)。しかし、誰かがファイルの名前を見つけた場合は、mydomain.com/data.txtで開くことができます。 .htaccessファイルを使用してアクセスできないようにすることができますが、私はパスワードを忘れています。GETSエクスプロイトなどの理由で人のファイルが流出していると聞いています。サーバー側コードのみで使用するデータを保存する最良の方法

<?php "mydata"; ?> 

は良い解決策になります。これはサーバーコードで使用するデータを保存する最も安全な方法ですか、それとも良い方法がありますか?

+0

なぜdownvoteですか? downvotingの前にコメントを書いてください。 – super

+0

これまでにデータベースについて聞いたことがありますか? – Reeno

+0

データは何のために使用されますか?できるだけ安全な状態にしたい場合は、この特定のデータのselectテーブルへの読み取り/書き込みアクセス権しか持たない新しいdbaユーザーを作成してください – Matt

答えて

1

データを保護する方法は非常に多くあります。ただし、最も一般的な2つは次のとおりです。

(1)多くのサーバーは、WebサイトのDOCUMENT_ROOT以上のアクセス権を持っています。例えば、彼らはこの場合

/.../my_account 
    /document_root 
    /some_other_directory 

...にアクセスすることができ、あなたのPHPコードはアクセスできますが、Apacheサーバができない /some_other_directoryディレクトリ内のファイルにデータを保存することができます。したがって、誰もそれにアクセスすることはできません。

(2)コードを適切に記述している限り、データベース(SQLなど)はWebサーバーから直接アクセスできません。不適切なデータベースへのアクセスには「データベースへのインジェクション」という問題があります。つまり、データベースとそのデータを公開するような方法でWebサイトにデータを送信できます。


しかし、 <?php mydata; ?>のようなものが動作するかどうかを具体的に尋ねました。はい、 *.phpファイル内にあり、ファイルが解釈され、テキストファイルとしてアクセスできない(PHPコードが公開されている)限り、動作するはずです。技術的には、処理に使用する変数に定数やその他のデータを格納することで、これを実行します。しかし、このソリューションは大量のデータに対して不便です。あなたは部分的には、含まれている100002ラインPHPファイルを保存することができます:

$my_customers = array(
    array('1', 'John', 'smith'), 
    array('2', 'Mary', 'doe'), 
    ... 
    array('100000', 'Henry', 'Lane') 
); 

しかし、それは、そのようなデータを格納するひどく非効率的な方法だろう。なぜ車を再発明するのですか?これがリレーショナルデータベースが存在する理由です。