人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについてです。
外部から受け取った整数がPHP内の配列変数に予め保存したリストと
一致するかどうかを判定するコードを書きました。あれば1、なければ0を出力します。

$data_array = array(1234,5678);
$get_number = $_GET['number'];
if(in_array($get_number,$data_array) == 1){
$check = 1;
}else{
$check = 0;
}
print($check);

リストは私が手動で書き加えてサーバにアップロードするものとします。
このリストに外部から不正に書き加えられる可能性を心配しています。
リストに存在するかどうかは誰に知られても良いことにします。
サーバにアクセスするパスワードなどは漏えいしないものとして、
弱点があれば教えてください。パーミッションがちょっと不安です。



●質問者: plugbot
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Number PHP print いもの アクセス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 牛乳先生(tukihatu)
●35ポイント

>このリストに外部から不正に書き加えられる可能性を心配しています。

”このリスト”というのは$data_arrayのことですか?

PHPの中に書いてあるこの$data_array部分を、http://から書き換えることはできないでしょう。属性が全開でも、別サーバからのアクセスは不可能です。(グループからは微妙なので、やるなら707が望ましいかも)

$_GET['number']に関しても、これだけにしか使っていないなら書き換える、という処理は行えません。


>パーミッションがちょっと不安です。

PHP自体をどこかの管理画面から上書きしたいということなのかな?それならまったく問題ないはずです。

それともこの$data_arrayを別ファイルに保存して、読み込んで使いたい、ということ?

別ファイルのファイル名がばれるとhttpからでものぞかれる場合があります。

.htaccessなどでアクセス制限をかけておくのをお勧めします。

<Files ~ "\.dat$">
 deny from all
</Files>
◎質問者からの返答

>”このリスト”というのは$data_arrayのことですか?

その通りです。

PHP自体はローカルで修正してその都度サーバにアップするという感じです。

この処理だけなら特に心配する必要はなさそうですね^^

ありがとうございます。


2 ● pahoo
●35ポイント

tukihatu さんが回答しているとおり、ご質問のスクリプトだけではリストの書き換えは難しいと思います。

パーミッションが心配であれば、リストを設置しているパス/ファイルに対しては、PHPのユーザー権限でのみReadできるように設定し、PHPスクリプト側でリストファイルを読み込むように変更してください。つまり、PHPスクリプトとしてarrayで書くのではなく、fgetcsv, file_get_contents で読み込むようにするのです。


しかし、範囲を広げて検討すればするほど、セキュリティ・リスクをゼロにすることはできなくなります。

下記のようなリスクが考えられます。

  1. 他のスクリプトが乗っ取られ、リストが書き換えられてしまう可能性。
  2. OS、HTTPサーバ、PHP、FPT/SSHサーバ の脆弱性を突いた攻撃により、リストが書き換えられてしまう可能性。

こうしたリスクを低減するには、アプリケーションのセキュリティ対策を重たくするだけでは限界があり、むしろ、リストファイルが正しいことを監視する方が合理的です。

たとえば、リスト・ファイルを更新する都度、md5_file関数によってリスト・ファイルのMD5ハッシュ値を計算し、控えておきます。これを手動でチェックするか、定期的にMD5ハッシュ値を照合するスクリプトを cron で走らせ、確認をさせる方法が考えられます。

◎質問者からの返答

かなり上級者向けという印象ですね^^;

でもおっしゃっていることは何となくわかります。

このように深く考えられるからプログラムはおもしろくもあり難しいのですね。

参考になりました。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ