PHPとシェルについて教えてください。
最近、OSコマンドインジェクションによる情報漏えいが多発しているので、理解しようと思い、調べております。
シェルやPHPについて知識が乏しい素人です。
ワードの誤用や質問の意図が分かり難いなどあるかと思いますが、回答いただけると幸いです。
シェルに関しては、こちらのページで確認し、シェルはカネールとの間に入って色々と作業をしているとの認識でおります。
■シェルとサーバの関係は?
シェルの役割については、何となく理解しました。
PHPに関しても、サーバー上にあるZned Engineによって処理していると理解しております。
引用ですが、PHP側に関しては、下記のようなイメージで理解しております。
引用:独習PHP 第2版
※第2版からの引用ですが、2016年4月9日に新しい第3版が出ています。
上図を参考に私の方でシェルとカーネルを追加しました。
【質問1】
シェルを実行する関数の利用を避けることで、OSコマンドインジェクションの対策になると「IPAの記事」に書いてあるので、Zend Engineとシェルがやり取りをしているのかと考えましたが、私の認識(上図)であっていますか?
※私が作成した図はこちらの「Cacoo」から編集も可能ですので、文章等で回答しにくい場合は、編集していただけると幸いです。
■使用する関数がシェル経由か調べるには?
先ほどの「IPAの記事」にはPHPの場合、exec(), passthru(), proc_open(), shell_exec(), system()
をなるべく使わないとの記述があります。
この関数は、シェル経由するため使わない方がよいとのことかと存じます。
【質問2】
PHPマニュアルを見てもシェル経由する関数かどうか記載がありません。
どのようにすれば、シェル経由する関数なのか確認することができますか?
【質問3】
そもそも、なぜシェル経由する必要があるのでしょうか?
調べた感じでは、シェル経由する関数とシェル経由しない関数の2種類があるのかと思います。
シェル経由する関数はカネールの機能を利用しないと実現できないために、シェル経由しているということでしょうか?
ご存知の方いれば、教えてください。
よろしくお願いいたしますm(__)m
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/05/02 09:58 編集
退会済みユーザー
2016/05/12 07:41 編集