2017-01-18 4 views
0

この質問は無期限に質問されている必要がありますが、動作する回答が見つかりません。oracle apexの< >の交換を防ぐことができません

私は、oracle apexインタラクティブ・レポートでdecode文を使用しています。考えられるのは、値がnullの場合はダッシュを表示し、そうでない場合はチェックマークの画像を表示することです。レポートのための私のSQLクエリで

私が持っている:私はすべての列を見るとCOL3がNULLのところ、私はダッシュを得るが、nullではない、それは

<img src="path/to/check.png" alt="check mark" /> 
を印刷した場合、レポートに

select "col1", 
"col2", 
decode (col3, NULL, '-', '<img src="#APP_IMAGES#check.png" alt="check mark" />') "col3" 
from "#OWNER#"."table" 

実際に印刷されているhtmlを見ると<の代わりに & & gtが表示されます。

これらの文字をエスケープするのは簡単な修正方法ですが、<と>文字をエスケープする方法はわかりません。 COL3属性へhttp://www.ruleworks.co.uk/apex/howto-decode-doc.asp

+0

あなたは**特殊文字をエスケープしていない= NO **? –

答えて

1

ガット:

興味深いことに、私はアイデアを得たサイトでは、これらの文字で何の問題もありません。 APEX 5では、「特殊文字をエスケープする」というオプションがあります。それを「いいえ」にすると、HTMLが表示されます。

ただし、XSS(クロスサイトスクリプティング)を簡単に導入できるので、この設定には注意してください。あなたのケースでは、col3の一部としてユーザー提供のデータを使用していないので、あなたは知りません。

「HTML表現」フィールド(列の属性でも可)を使用する方が良い方法です。次にCOL3は画像を返すことができますし、HTMLの表現は次のようになります。

select ... 
    , decode (col3, NULL, 'blank.gif','check.png') col3_flag 
     ... 

HTML式: `col3`列の属性で

<img src="#APP_IMAGES##COL3_FLAG#"/> 
+0

ジョージは魔法です、ありがとう! XSSのヒントもありがとう! – zee

関連する問題