2

我使用 javascript 编码了一个 html 文本属性并将其传递到我的数据库中。我的意思是像“Wales&PALS”这样的字符串的javascript

encodeURIComponent(e.value);

转换为“威尔士%20PALS”

我想将它从 asp.net 转换回“Wales&PALS”。关于如何嵌入的任何想法

decodeURIComponent(datatablevalues) 

在我的 asp.net 函数中返回所需的文本?

4

2 回答 2

6

作为 SQL 注入的预防措施,我们使用参数化查询或存储过程。编码并不真正适合那个。如果您希望您的用户向您的网站添加内容并且您希望防止他们注入恶意 javascript,那么 Html 编码是很好的选择。通过对字符串进行编码,浏览器只会打印出内容。您所做的是对字符串进行编码,将其添加到数据库中,然后尝试将其解码回原始状态并将其显示给客户端。这样你就容易受到多种 javascript 注入的攻击。

如果那是您的意图,没问题,请注意后果。每次做出这样的决定时,都要知道“为什么”和“如何”。这有点危险。

例如,如果您想让您的用户添加 html 标签作为增强插入内容的一种方式,一个更安全的替代方法是创建您自己的标签集(或使用现有的标签集,如 BBCode),因此输入从不包含任何 html 标记,当您将其插入数据库时​​,只需先解析它以切换到真正的 html 标记。Asp.net 引擎绝不会在请求期间允许恶意输入(除非您自愿强制这样做),并且由于您已经控制了解析输入,因此您可以确保在输出时它是安全的,因此不需要进行一些额外的处理。

只是给你一个想法:)

如果你真的坚持按你的方式做(编码 -> 数据库 -> 解码 -> 输出),我们有一些选项可以做到这一点。我给你看一个例子:

例如,您可以创建一个新的 get-only 属性,它将返回您的解码数据。(如果需要,您仍将保留原始编码数据)。像这样的东西:

public string DecodedData
{
   get
   {
       return HttpUtility.UrlDecode(originalData);
   }
}

http://msdn.microsoft.com/en-us/library/system.web.httputility.aspx

如果您尝试对 html 输入进行编码,则最好使用不同的编码机制。不确定javascriptsencodeURIComponent是否可以正确解析出html。

于 2013-04-03T18:46:22.657 回答
0

在 HttpServerUtility 中尝试 UrlDecode。它的 API 页面

于 2013-04-03T18:19:23.143 回答