2012-07-12 53 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>");