プロジェクト

全般

プロフィール

Bug(バグ) #3367

Youichi Kimura さんが11年以上前に更新

h3. Overview (現象) 

 管理画面のガジェット設定 (/design/gadget?type=dailyNews) からデイリーニュースで使用するガジェットを設定できるが、このガジェットのパラメーターに対してエスケープが施された状態でメール送信されてしまう。 
 例えば、デイリーニュースのガジェットに「フリーエリア」を追加して「内容」に「>>>> aaaaa <<<<」を設定すると、送信されるデイリーニュースのメール本文には「&gt;&gt;&gt;&gt; aaaaa &lt;&lt;&lt;&lt;」が出力される。 

 h3. Causes (原因) 

 メールテンプレートにおけるエスケープ処理の問題は #1344 によって修正されており、その修正内容は下記のようなものでした。 

 <pre><code class="diff"> 
 --- a/lib/util/opMailSend.class.php 
 +++ b/lib/util/opMailSend.class.php 
 @@ -81,6 +82,7 @@ class opMailSend 
      $view = new sfTemplatingComponentPartialView($context, 'superGlobal', 'notify_mail:'.$target.'_'.$template, ''); 
      $context->set('view_instance', $view); 
 
 +      $view->getAttributeHolder()->setEscaping(false); 
      $view->setPartialVars($params); 
      $view->setAttribute('renderer_config', array('twig' => 'opTemplateRendererTwig')); 
      $view->setAttribute('rule_config', array('notify_mail' => array( 
 </code></pre> 

 一方、デイリーニュースの送信には、メールテンプレートこそ使用しているものの本文中で include_component を使用しており、呼び出されるコンポーネントのために新たに sfViewParameterHolder が生成されます。この sfViewParameterHolder は呼び出し元ビューのエスケープ設定を引き継がず、sfConfig から sf_escaping_method や sf_escaping_strategy の値を取得して設定するため、コンポーネント内では #1344 の修正による効果が及ばないことになります。これが原因で、デイリーニュースのガジェット内ではエスケープが有効な状態でテンプレートが出力されます。 バグが発生した原因を記入 

 h3. Way to fix (修正内容) 

 修正内容を記入

戻る