1

symfony2 のコントローラからエスケープ関数を呼び出す方法は? ビュー ファイル (PHP エンジン) の場合、次のように呼び出されます。

Hello <?php echo $view->escape($name) ?>

XSS攻撃からいくつかの変数を表示してエスケープするには、HTMLスニップセットを送信する必要があります。このエスケープ関数は単なるhtmlspecialchars () またはhtmlentities () ですか。それが不可能な場合は、htmlspecialchars を呼び出す必要があります。

4

1 に答える 1

3

を見てみましょう:

// Symfony\Component\Templating\PhpEngine.php
htmlspecialchars($value, ENT_QUOTES, $that->getCharset(), false)

そうです、最終的には htmlspecialchars が使用されます。PhpEngine は、javascript などの他のタイプの出力のエスケープもサポートしています。

ただし、コントローラーで html を生成しないようにする必要があります。時間をかけてそれを php テンプレートに移動し、テンプレート作成者にそのようなことを心配させてください。

エンジン自体を取得できるかどうかを確認するのに少し時間がかかりましたが、サービスとして直接公開されていません。これを行うことができます: $engine = $this->get('templating')->getEngine($name) しかし、残念ながら getEngine() は保護されています。そのため、エンジンを入手する明白な方法はわかりません。

ただし、繰り返しますが、テンプレート エンジンを設計どおりに動作させるのが最善です。

于 2012-04-24T14:13:52.953 に答える