ユーザーがPHPにサンドボックスまたはプレイグラウンドを設定して、XMLとXSLTを作成(または貼り付け)できるようにして、XSLTを介してXMLを変換したいとします(PHP 5のDOMDocumentおよび関連オブジェクト)。
したがって、簡単な例では、2つのtextareas(XML用とXSLT用)を持つフォームがあります。ユーザーは自分のXMLとXSLTを入力し、ボタンを押します。 XSLTとXMLは私のサーバーに投稿され、そこでXSLTを使用してXMLを変換し、結果をユーザーに返します。
ある意味では、これはeval()
に似ていますが、このシナリオのリスクは最小限であるか、PHPとそのコードをeval()
edしました。
私の直感は正しいですか、またはここに隠れたセキュリティ問題がありますか?もしそうなら、それらは何であり、私の理論的なアプリケーションを確保するためにどのような予防策を検討する必要がありますか?.
私はPHP 'newbie'と呼んでもかまいません。しかし、過去にXMLとXSLTライブラリのセキュリティの脆弱性を分析し、最近、かなりの少しXML、これは私が考えることができるものです:
/etc/passwd
、/etc/shadow
などをこの方法で取得することが可能です。可能であれば、エンティティ参照の展開を無効にします。上記は必ずしも包括的ではありませんが、それは良い出発点であると思います。