2012-07-12 48 views
-1

我知道互聯網加載了轉義字符的信息,但我沒有具體找到我需要的東西。我正在查詢來自數據庫的庫存信息,庫存描述可能包含需要轉義的各種「危險」字符。當我循環訪問數據讀取器時,我需要用該字符的轉義版本替換任何潛在問題字符的所有實例。我看過Regex.Escape,但是它留下了一些關鍵字符,例如引號。還有Regex.Replace,但是如果我替換的字符可以是任意數量的東西,我該如何告訴它替換字符串應該是什麼?我將如何處理以下:C#用跳轉版本替換字符串中的字符

SQL查詢返回以下結果庫存說明設置:

  • 3/4" 電線
  • 5' 繩@StoreX
  • 1 \ 4" 六角堅果

**我承認有與描述自己更深層次的問題,但假設這是數據我有工作...

SqlDataReader dr = command.ExecuteReader() 
while(dr.Read()) 
{ 
    string partDescription = dr["Description"].ToString(); //Here is where I need to escape any characters posing a potential issue 
} 
+5

你想在哪裏*使用*這些逃脫的字符?哪些字符需要轉義,轉義類型取決於您想要使用它的位置! – 2012-07-12 14:10:36

+0

爲什麼你需要將它們轉移出SQL Server?您需要轉移INTO SQL Server中的內容以確保這些字符不會更改UPDATE查詢的語義;但是,從SQL Server出來並沒有那種效果。所以,我不清楚你爲什麼想逃到這裏... – 2012-07-12 14:12:19

+0

也許我只是誤解了錯誤信息。數據正在通用列表中的Web服務上輸出。當我嘗試調用Web服務時,出現第58欄第58273行的錯誤:xmlParseCharRef:invalid xmlChar「 – jmease 2012-07-12 14:15:16

回答

1

您是否知道Web Protection Library(以前稱爲AntiXSS)?這包含了很多轉義(HTML,Javascript,XML)。

1

如果這僅用於顯示目的(在網絡上),那麼您只需要在顯示值之前對HTML進行編碼。你可以用HttpUtility做到這一點

HttpUtility.HtmlEncode("<script>alert('yo');</script>");