2017-06-19 13 views
1
[whamlet| 

      <h2> Here's the ES results: 
      <h1> 
      <ul> 
       $forall EsHighlight high <- highlights re 
        <li> 
         <br> 
         #{toHtml high} 

     |] 

をエスケープされずにHTMLとしてレンダリングし、このようなものです:イェソドWhamletは高い

"large <em>bamboo</em>, and a crotched stick. Throwing these down, he poked under a pile of rubbish, and brought out a rough block of wood, pierced through and through with a hole, which was immediately clapped on the top of the jar. Then planting the crotched stick upright about two yards distant, and making it sustain one end of the <em>bamboo</em>, he inserted the other end of the latter into the hole in the block: concluding these arrangements by placing an old calabash under the farther end of the <em>bamboo</em>." 

問題が<em>をHTMLにレンダリングされたが、文字列のままされていないということです。したがって、Webページは<em>と表示されます。 どうすればいいですか?

+0

代わりに^ {...}を使用してください。 – mb14

+0

@ mb14 thxでも動作しません。 – osager

+0

^{..}を使用するには、文字列(またはテキスト)の代わりにウィジェットが必要です。あなたはウィジェットになるために何とか 'high'を変換する必要があります(多分' [whamlet | .. |] 'を使って生成してください)。 – mb14

答えて

2

XSS攻撃からの保護として、Hamlet(および基本となるblaze-htmlライブラリ)のデフォルトの動作は、toHtml機能を介してすべてのHTMLエンティティをエスケープすることです。エスケープを避けるには、preEscapedToHtmlを使用します。ユーザー提供のデータでこの関数を使用すると、非常に危険なになることに注意してください。

関連する問題