MW211 EXIT

devlog
PHP/file_get_contents()とセキュリティ
2014年04月28日
「file_get_contents()」を使って、別サーバの情報を入手するには、
「php.ini」の設定で「allow_url_fopen=on」としなければならない。

これはファイルマニピュレーション機能を可能にするということで、
システム上のファイルの更新を許すということになる。

つまり、セキュリティ的によろしくない。

よって、「allow_url_fopen=off」設定とすることが望まれる。

そうなると別サーバのURLを指定して「file_get_contents()」で
そこの内容を取得するってことができなくなる。

でも、結構これは便利で使いたい。
ということで、代案。
curlってのを使って、以下のような感じにすればよい。
┌──────────────────────────────────────┐
│function fileGetContents代替($url) {                                        │
│    $session = curl_init($url);                                             │
│    curl_setopt($session, CURLOPT_HEADER        , FALSE);  // ヘッダ不要    │
│    curl_setopt($session, CURLOPT_RETURNTRANSFER, TRUE );  // 文字列で返却  │
│    $return = curl_exec($session);                                          │
│    curl_close($session);                                                   │
│    return $return;                                                         │
│}                                                                           │
└──────────────────────────────────────┘

「file_get_contents()」で「allow_url_fopen」の設定の影響を受けるのは
あくまで別サーバをリモートで参照する場合のみ。
自サーバ(のファイル)を参照する分には影響を受けないので
「allow_url_fopen=off」設定で上記代案を併用している場合でも
自サーバに対しては「file_get_contents()」が使用できる。
分類:PHP