1

フレームワークに慣れるための方法として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エディターフィールドを提供する、私が知らない別のパッケージはありますか?

4

2 に答える 2

1

現在、Yesod Webサイトで使用できる他のリッチテキストエディタを実際に検討しているため、そこで使用するものはすべて、yesod形式のモジュールになります。ごく最近、グレッグはアロハエディタを指摘しました。これは一見するとかなりクールに見えます。

于 2011-08-03T19:30:35.717 に答える
1

これについて、Yesod Issue Trackerにバグを報告しますか?どのエディターを使用する場合でも、エディターを介して基本的なcssを許可する必要があると思います。信頼できるユーザーの場合、今のところNicEditフィールドタイプを見つけて、まったくフィルタリングされない同様のタイプを作成できます。おそらく、そのようなフィールドを作成する必要があります。

于 2011-08-05T03:44:42.160 に答える