2011-09-01 72 views
7

私はPHPでコメント解析関数を書いています。コメントフォームにBBCodeは使用してもHTMLを使用しないのはなぜですか?

BBCodeは本当のマークアップ言語ではないので、I'vは書くスタイルを決して好みませんでした。
私は訪問者にコメントフォームで基本的なHTMLコードを使用できるようにしています。
投稿時に、PHPは許可されていないタグ/属性をチェックし、置き換えたり削除したりします。

私はそれが同じ仕事をし、BBCodeとまったく同じ結果を出力すると信じています。

これが当てはまる場合、なぜBBCodeはありますか? BBcodeはHTMLよりも利点がありますか?

更新

モノクロはあなたのHTMLフィルタが十分に安全であることを確信している場合は、あなたがよく

かかわらず問題ないはず、私は自信を持って書いていないんだ

に答えてフィルタは自分ではありますが、PHPの単純なHTML DOMパーサ、HTML浄化器、htmLawedのようないくつかのトップレートフィルターがあります。

BBCodeはUBBによって開発され、phpBBのように広く使われています。

UBB/phpBBの開発者は、完璧なHTMLフィルタを作成するスキルについて自信を持っていませんか?

また、StackOverflowが使っているMarkdownのように、HTML + Parserがその仕事をしているとしたら、どうして別の "言語"を発明するのでしょうか? (いくつかのビットを保存することを除いて...)

+2

Markdownは新しいマークアップです。 – BoltClock

+1

私はHTMLマークアップがかなり簡単に悪用されていると思います。あなたのチェックは回避策です。ハッカーは、セキュリティホールを見つけることになるとかなり独創的になる可能性があります;) – knittl

+0

@knittlこれは私/ PHP VSハッカーについてです。まあ、たぶん私は "IF ...私の構文解析システムは/強く書かれている"を追加する必要があります。私は本当にhtmlが許されるコメントフォームに対するハッキングの例を見たいと思います。 – Jon

答えて

2

BBCodeは、HTMLフィルタにバグがある可能性があるという問題を解決し、コメントにはコメントしないコードをコメントできるようにします。 HTMLフィルタが十分安全であると確信しているなら、うまくいくはずです。

もう1つの問題は、HTMLコメントによってレイアウトが壊れることがあることです。コメント投稿者が単一の閉鎖</div>かそのようなものを置くとき。

+4

いいえ、そうではありません。 BBCodeパーサーには、XSSも許可するバグがある可能性があります。 – Quentin

4

主な利点は、不要なコードの挿入を防ぐことです。だから、私はBBCodeやMarkdownのようなものを使うだろう。

少なくともブラックリストではなく、許可されたHTMLタグのホワイトリストで作業する必要があります。

+0

+1はホワイトリストの発言です。 –

+3

*すべての単一(ボディ)タグ*には、その属性にスクリプトを添付することができます。スタイル。また、attr名のホワイトリストが必要です。 – Cheekysoft

1

BBCodeは、XSSを防止しようとしている間にユーザーにhtmlへのアクセスが制限されているとして普及しました。 BBCodeはその前に普及しましたHTML Purifierのような解決策。現実にはBBCodeとHtml Purifierはそれぞれ独自のセキュリティ上の問題があります。 BBCodeはこの問題に対するより簡単な解決策でした。

0

BBcode + htmlspecialcharにすべての左のタグを変換すると、完全にXSSが無料であるようです。 (BBcodeパーサーが実際に設計されたスーパーバッドでない限り)

最終的に、両方とも同じ目標に達します。現在のところ、BBpecを選択するのはHTMLpurifierのauto stripタグで、leftタグをhtml specialCharに置き換えるためです。少なくともデモでは、左のタグを保持している関数は表示されませんでした。

ユーザーには、& ltを書きたいと思っているので、問題があります。自動変換する代わりに<に変換します。また、すべてのデータを検証するための怠惰の問題があります。

関連する問題