file_get_contents、wp_remote_getのリスクについて
前提
google AMPページの対応をしています。
ヘッダに直書きするstyle amp-customを
sassファイルから自動的にcssファイルを生成している状況で
gulpにて書き込むか、phpのfile_get_contentsで
読み込むか、wordpressのwp_remote_getで
読み込むかというところで迷っています。
迷いが生じた背景
file_get_contentsがセキュリティ脆弱性原因になる場合がある
という記事を見たことがあるのでセキュアに使うにはどうすればいいかと
調べていて不明点が出てきました。
疑問点
1.ある書籍にfile_get_contentsをセキュアに使うサンプルが載っていました。
$clean = array();
$html = array();
/*入力($_GET['filename'])をフィルタする*/
$contents = file_get_contents($clean['filename']);
/*入力($contents)をフィルタする */
$html['contents'] = htmlentities($clean['contents'], ENT_QUOTES, 'UTF-8');
echo $html['contents'];
上記のコメントアウトの部分の意味が解りませんでした。
4行目の$contents = file_get_contents($clean['filename']);は
元々$contents = file_get_contents($_GET['filename']);だったものを
セキュアに変更したという内容なのですがなぜarray()経由で
読み込むとセキュアになるのでしょうか。
それとも「入力($_GET['filename'])をフィルタする処理をここに書く」という
意味のコメントアウトなのでしょうか。
5行目のコメントアウトも同様に意味が解りませんでした。
2.今回は同サーバ上(同じドメイン)で管理者自らが生成しているファイルを
読み込むという状況なのですが、こういった状況でも
file_get_contents、wp_remote_getをサーバ上で動かすことで
考えられるリスクはあるのでしょうか。
3.色々なサーバを触っている方がいらっしゃいましたら伺いたいです。
サーバによってはfile_get_contentsが使えないというところもあるようですが
file_get_contentsが使えないところと使えるところで比べた場合どちらが多いでしょうか。
ご指摘アドバイスいただけましたら幸いです。
上記状況を整理してみました。
【gulpメリット】
・セキュリティリスクの心配がほぼなくなる。
・サーバ上でプログラムが作動しないのでサーバ負荷がわずかに減らせる。
【gulpデメリット】
・サイトごとにgulpタスクを構築(コピー)しなければならない。
【phpメリット】
・ソース管理が楽。
【phpデメリット】
・セキュリティに考慮してソースを書かなければならない
・サーバに少しだけ負荷がかかる。
今回のサイトは小規模コーポレートサイトで
サーバ移転が発生することも考えられるため
gulpで対応することも考えていますが
皆様でしたらどのような判断をするか
また似たような体験談がありましたら
是非参考にさせていただきたいです。