2012-02-27 11 views
0

ユーザー入力HTMLを検証する方法を探していますが、これはコメントフォームに表示されるものと似ています。ユーザーの入力は、p、ul、li、div、imgなどの最も基本的なタグに限定する必要があります。許容される唯一の属性はスタイルです。ユーザー入力HTMLサブセットの検証

検証は、Rubyを使用して、Javascriptまたはサーバーサイド経由でクライアント側で行うことができます。私はこれを行うことができる、または少なくともこれを行うためにいくつかのRegExesを見つけることができるJavascriptライブラリを見つけることを望んでいます。

ご意見ありがとうございます。

+2

をサイドバリデーション。ユーザーがクライアント側の検証を回避するために、(例えば、Firebugを介して)あなたのスクリプトを乱さないようにすることは絶対にありません。それがあって、クライアント側の検証があれば、ページはずっと使いやすくなります。 –

答えて

0

Sanitizeを使用してHTMLをフィルタすることができます。

あなたが検証コードに次のようなものを使用することになり、あなたの質問に記載されている例の要素を使用して:私は上記の私のコメントで述べたようにできるように、

Sanitize.clean(html, 
    :elements => ['p', 'ul', 'li', 'div', 'img'], 
    :attributes => {' 
     'all' => ['style'] 
    } 
) 

style属性を使用すると、許可する場合は特に危険なことができ<a>タグは、ユーザーがページ全体をカバーする目に見えないリンクを作成した場合に、最大でclickjackingの攻撃を開きます。

あなたは、私は完全にstyleを禁止し、おそらくユーザーに提供リンクにrel=nofollowを追加することをお勧めし<a>タグ許可したい場合は:あなたは関係なく、あなたがクライアント - を持っているかどうかのサーバー側で検証する必要があります

Sanitize.clean(html, 
    :elements => ['p', 'ul', 'li', 'div', 'img', 'a'], 
    :add_attributes => { 
     'a' => {'rel' => 'nofollow'} 
    } 
) 
+0

これはおそらく私が欲しいものです。ありがとうございました!私はそれに渦を立てます。 – tmo256