質問: よろしくお願いいたします。 環境: MacOS 10.15.4 PHPリファレンスを参考に関数について見ていると、`eval()関数`という関数が出てきたのですが、 説明を読むと ``` "eval — 文字列を PHP コードとして評価する" ``` と説明があり、自分の解釈ではphpタグ内でevalを使用するとカッコ内でphp開始タグと終了タグを生成 するという解釈をしているのですが..... いくつか疑問点がありまして 1.そもそもなぜphpタグ内でさらにphp開始終了タグを生成する必要があるのか 2.リファレンスには不用意な使用は危険であるとあるがなぜか 1に関しては唯一使う可能性があるとしたら、phpタグをphpタグ内で抜けたい時に `eval('?> hoge
回答: よくあるのは、変数を php として評価させたいときですね。 $str = "1+2+3" を計算させるのはそれなりに大変(数式のパーサを作って、計算させないといけない)なんですけど、eval を使用すると簡単に結果を取り出せます。 で、この「変数を評価させる」てのが厄介で、攻撃者が危険なコードを実行できてしまうケースがあります。 初心者が最もやりがちなのは「外部からの入力を直接評価させる」ことです。 危険なサンプルはネット上に転がっているので、調べてみると良いです。