フレームワークに慣れるための方法としてYesodを使用して、(かなり単純な)Webサイトを書き直しています。その一部には、いくつかの単純な静的(ただしフォーマット済み)コンテンツの提供が含まれます。そのために、Yesodの本で説明されているnicHtmlフィールドを使用することにしました。
http://www.yesodweb.com/book/forms
簡単なフォーマットが可能で、本に書かれているように、「xss-sanitizeパッケージのおかげで、すべてのユーザー入力が検証され、XSS攻撃がないことが保証されます」。
しかし、すべてがうまくいっていません。フィールドに入力すると一部のフォーマットが機能するように見えますが、入力と送信の間のどこかで消去されます。特に、フォームは「style」属性に埋め込まれたcssを使用して、中央のテキストなどを実行します。これらのcssベースのフォーマット要素が消去されているように見えます。
私はprintステートメントを使用して、それがどういうわけかそれを台無しにしていたのが私のコードではないことを確認しました。そうではないように思われるので、xss-sanitizeは埋め込まれたcssを嫌い、それを削除すると思います。Yesod.Form.Nicを変更してsanitizeBalanceの呼び出しを削除すると、問題が修正されたように見えるため、それが原因のようです。
これらの静的ページを編集するには、とにかく信頼できるユーザー(つまり、現時点では私)である必要があるため、そのままにしておくことができます。そのため、不快感を検証することについてはあまり気にしません。しかし、それはそれが何であるか、ハックのように感じるので、私の質問は-これを回避する他の方法はありますか?または、Yesod用の壊れていないHTMLエディターフィールドを提供する、私が知らない別のパッケージはありますか?