2017-01-08 7 views
-1

私はPHPコードを作成しました。 (myphp.php)PHPファイルを保護するには?

if(count($_GET) === 1 && isset($_GET['secretcode'])) { 
    echo "my personal data"; 
} 
else{ 
echo "Not Found" 
} 

ので、ユーザーがPHPを表示するために、 "http://server.com/myphp.php?secretcode" のようなものを参照する必要があります。

質問は、これは安全ですか? 誰かがPHPをバイパスできますか?もしそうなら、それをより安全にする方法は?このような

何かが

//.htaccess 
<Files *.php> 
Deny from All 
</Files> 

うまくいくかもしれない。しかし、私は、彼らが正しいパラメータを入力した場合にのみ、誰もがそれにアクセスすることができますしたいです。

ありがとうございました。

+3

'secretcode'の値が設定されているかどうかを確認した方が安全だと思います。 – chris85

+1

...のように '&& $ _GET ['secretcode'] ==" x "' - 編集:これはおそらく@ chris85が意味するものであり、それはあなたがここで何をしたいのかに応じて。 –

+0

それを得ました。大丈夫です。 @ Fred-ii-に感謝します。ファイルには「人とその年齢の名前」が含まれます。私はちょうど始めたいと思うほど個人的ではありません。たぶん私はそれをより安全にするために他のソリューションを使用します。 –

答えて

0

あなたの情報がどれほど敏感であるかによって、いいえ、これは安全ではありません

あなたが書いたソネットだけであれば、他の人には読ませたくない場合は、十分に良いかもしれません。それがあなたの個人的な銀行口座の情報ならば、これはひどいセキュリティです。

GETパラメータはURLの一部であり、アクセスするURLは、ISPなどのサードパーティ製のサーバとアップストリームプロバイダに記録されて保存されます。開いているWiFiでこのURLにアクセスした場合、そのネットワーク上の他の誰でもにアクセスして、あなたの「秘密」URLが漏洩することになります。あなたがプロキシ経由であなたのアクセスを漏らしようとすると、それらの人々から秘密のコードを保護することができますが、代わりにその情報をプロキシに漏らしただけです。

HTTPS経由であなたの秘密のURLを閲覧するだけでこれを緩和することは可能かもしれませんが、たとえ管理者があなたのマシンにルート証明書をインストールしているネットワークでその場合、あなたの秘密は今すぐ外れています。 SSL/TLSを使用しているかどうかにかかわらず、一般にあなたが訪問しているドメインを保護することはできません。

@ chris85が彼のコメントで述べたように、あなたは本当に秘密が正しいかどうかをチェックしていません。あなたの秘密情報にアクセスするために必要なのは、値が何かに等しいこともチェックしていないので、パラメータ名だけです。

あなた自身の使い方でもユーザビリティの問題に遭遇する可能性があります。 「秘密」コード以外のクエリパラメータを2つ以上使用する必要がある場合は、保護によってアクセスが拒否されます。

+0

私は彼らのファイルを「公開」の外に置くことも述べています。 –

+0

良い説明をいただきありがとうございます。あなたはとても役に立ちました。 :) –

関連する問題