2011-05-05 76 views
1

ASP.NET有能力檢測來自客戶端的潛在危險輸入。我希望將這種能力用於不同的目的。我有一個搜索引擎從我們的數據庫中提取內容。有時候這些內容是用html表示的。使用C#和或ASP.NET檢測內容中的HTML或Javascript

我想檢測它是否在HTML中,可選地只是不顯示的內容,因爲它看起來像用戶gobbledygook。

我知道我可以使用正則表達式來嘗試檢測這個。我希望ASP.NET能夠很好的檢測內容,所以我可以重用方法。

我現在正在做的只是HtmlEncoding所有從已知有HTML(或可能包含它)的字段。但是,如上所述,我想避免顯示用戶編碼的HTML B/C這是沒有用的。相反,我只是不顯示內容。

摘要:

  1. 檢測是否從數據庫內容包含HTML
  2. 如果確實如此,只是沒有把它顯示給用戶。
  3. 如果有建議將html片段轉換爲純文本,則爲獎勵積分。

回答

1

如果你想去掉任何HTML或JavaScript,我會建議在尋找由傑夫·阿特伍德創造了這個清理HTML功能:

http://refactormycode.com/codes/333-sanitize-html

這可能不是您需要的完整解決方案,但它將是一個很好的開始。

+0

最後我做這樣的事情。它適用於我的puposes。 – 2011-09-14 16:34:28

0

你可以做這樣的事情與jQuery,因爲你可以將其添加到一個元素爲文本或HTML字符串:

var str = '<a href="/path">Link</a>'; 
$('div').html(str); 

會輸出:

Link

但這:

var str = '<a href="/path">Link</a>'; 
$('div').text(str); 

將輸出:

<a href="/path">Link</a> 
0

如果您控制生成並存儲在數據庫中的html,您可以簡單地向該表添加一個位字段,並在插入時將其設置爲1或0,具體取決於它是否爲html。要確定它是否爲html,只需搜索幾個不同的標籤,直到找到一個使用String.Contains方法的標籤。 Here is a list of common html tags

更新: 我將忽略尾部尖括號並搜索標籤,例如:<範圍< div < html等。

更新: 你可以通過lynx運行HTML得到它從HTML轉換爲文本顯示

+0

如果你在插入時做了它,只需要爲每個插入或更新計算一次,而不是每次選擇 – 2011-05-06 00:20:52

相關問題