2011-03-10 8 views
2

私のウェブサイトにブログエンジンを作成中です。何もない。ユーザーは、この質問の問題であるコメントそのものを含め、いくつかの基本情報を登録します。ユーザーが投稿したブログコメントを作成する

コメント欄には、テキストを書くことができますが、現在のところ、そこに有害なものを書くのを止めるものは何もありません。

だから私はこれらの3つのタスクを達成するためにどのような最も簡単な方法を思ったんだけど(:) .NETに組み込まれて何かを期待して)されている

  • 有害なHTMLがスクリプトを実行するために、テキストボックスに書き込まれていないことを確認すること、またはコメントが追加された後にすべてのユーザーにエラーが表示されるようにするだけです。
  • 私はまだ<a>,<b>などのタグを受け入れたいので、ユーザーはテキストを書式設定してリンクを提供できます。
  • ユーザーが書き込んだときと同じようにコメントが表示されるように、メッセージに改行を付ける必要があります。現在、すべての改行はHTMLコンテンツの標準として無視されます。

答えて

1

を持つことができますSQLインジェクションを避けるためにデータベースには、How To Protect from SQL Injeciton in ASP.NETというMSDNの記事があります。

ユーザーがコードを書式設定できるようにする場合は、エクスプロイトのためにオープンします。ほとんどの場合、これについて複数回考えなければなりません。まずすべてのタグに一致する終了タグがあることを確認します。誰かが書く場合:<strong>Hello!それ以降のすべてのテキストを太字にしたくないからです。

あなたがアプローチを使用することができます

:あなたはこれらは私がお勧めする方法/ライブラリの2つです異なるライブラリのカップルを使用することができ、これをacheive支援するため

ユーザーが[太字]テキスト[/太字]を書くことを許可し、他のすべてにHtml Encodingという名前を使用します。あなたは次のように記述した場合ので:

<strong>this will not be in bold</strong>[bold]But this will![/bold]

出力は次のようになります。

<strong>this will not be bold</strong>が、この意志!

あなたはこれらの手順に従って、これをacheive:

  • HTMLエンコードテキスト
  • をお使いのBBコードのタグ([太字]とものではありません)については、適切なHTMLと

を交換してくださいあなたが\r\n<br />に置き換える必要がある場合は、このためにHtml Agility Packをチェックするか、String.Replaceを使用してください。

Jeffs blog post about Safe HTML and XSSもお読みください。

+0

大きなリンクと説明に感謝します。私は今一緒に何かをまとめることができます:) –

+0

リンクバックに感謝しますが、私はこれがØyvindの方がよいはずです: http://eksith.wordpress.com/2011/06/14/whitelist-santize -htmlagilitypack/ HTMLAgilityPackを使用し、タグの数を制限します。また、後でWYSIWYGを実装する必要がある場合は便利です。 – eksith

1

私の最善の提案は、wikiコードまたは掲示板コード(BBCode)を使用することです。

  • http://bbcode.codeplex.com/:私はあなたがテキスト入力を構成するあなたのコメントでBBコードを使用することができますので、パーサエンジンである「Codekicker BBコード」と呼ばれるのCodePlexのプロジェクトを、使用していた私の個人的なプロジェクトの一つで、いくつかのカスタム開発で

セマンティクスを拡張してさらにBBCodeタグを追加するのは難しくありませんが、すぐに使用できるもので十分です。 - 。

私は決してwikiコードエンジンを統合したことはありませんが、Screwturn Wikiのソースコードをダウンロードしてwikiコードパーサーを取り除き、独自のソリューションで使用することができます - それはGPLですか?著者通知とライセンスを残しておけば、それを行うことができます! - :

あなたは、標準のXHTML/HTML要素を可能性がありますが、それは、そのようなパーサを使用する方が良いと思います。

私humild意見は、ウィキコードパーサがBBコードよりも優れているが、多分あなたの要件とBBコードは、あなたがに値を追加するときに、適切なメソッドを使用することを確認するには良い結婚:)

関連する問題