0

SQLにHTMLとしてテキストを保存しています。ユーザーはどこからでもコピー/貼り付けして、使用しているエディターコントロールに貼り付けたり、生成されたHTMLを手動で編集したりできるため、このデータが整形式であるとは限りません。

問題は、ユーザーのテキストがWebアプリケーションの他の場所に表示されたときに、含まれているページの通常の操作を中断しないように、タグ<script/>を削除するか、何らかの方法で無視するための最善の方法は何ですか。<form/>

私は<script>/の「検索と置換」を単純に実行するというアイデアをいじくりまわしまし<form><div>(明らかに、空白と終了タグが存在する場合はそれを考慮に入れます)。また、特定のタグをなんらかの方法で「無視」する方法もあります。<div id="MyContent">私が知っている限りでは、、扱い<form>、および<script>としてのすべての要素に対して、(HTML、CSS、またはJavaScriptで)「」という組み込みの言い方がある可能性があります<div>

どんな助けやアドバイスも大歓迎です!

4

7 に答える 7

1

ユーザー入力のサニタイズに関しては、フォームタグとスクリプトタグだけをクリーンアップする必要はありません。

この作業を行うための最良の方法は、使用しているツールによって少し異なります。これらの質問を見てください:

于 2009-10-13T13:14:45.417 に答える
1

使用している言語によって異なります。一般に、HTMLパーサーを使用し、スニペットから小さなDOMを構築してから、不要な要素を削除することをお勧めします。多くの優れたHTMLパーサーがあり、特に実際の乱雑なHTMLを処理するように設計されています。例としては、BeautifulSoup(Python)、HTMLParser(Java)などがあります...そして、入力中に答えが返ってきたので、Colinが言ったことです!

于 2009-10-13T13:15:44.883 に答える
1

自分でやろうとしないでください。スクリプトの一部と一般的な不快感をページに取り込むには、トリックが多すぎます。Microsoft AntiXSSライブラリを使用します-バージョン3.1にはHTMLサニテーションが組み込まれています。おそらく、サニタイズされたHTMLのチャンクを返すGetSafeHTMLFragmentメソッドが必要です。私の以前の答えを参照してください。

于 2009-10-13T15:05:17.623 に答える
1

.Netを使用しているので、操作HtmlAgilityPackが簡単で、不正な形式のHTMLでもうまく機能するのでお勧めします。

于 2009-10-13T15:13:40.430 に答える
0

提案された答えは受け入れられましたが、私は、beginとend<script>および<form>tagsを<div>'sに置き換えるために古き良き正規表現を使用することになりました。

于 2009-11-03T03:13:33.960 に答える
0
txtStore.Text=Regex.Replace(txtStore, "<.*?>", string.Empty);
于 2013-09-17T07:43:30.573 に答える
0

私は以前に同じ問題に直面していました。しかし、私のシナリオは別のものでした。ページにajaxリクエストでコンテンツを追加していました。ajax応答で提供されるコンテンツはhtmlであり、スクリプトタグも含まれていました。スクリプトなしでhtmlを取得したかったので、jqueryを使用してajax応答からすべてのスクリプトタグを削除しました。

jquery-remove-script-tags-from-string

于 2014-09-07T07:27:35.617 に答える