2

我在尝试解决撇号相关问题时遇到问题。
我已经搜索过,但找不到任何对我有帮助的东西。

我的客户端javascript代码是:

var strUserText = uSettings.replace(/'/g, "'")  

执行上述行后,表单会提交

document.form1.submit();  

在后面的代码中,一个类检索这些值:

sUserSettings = request.form("strUserSettings ")  

结果是一个半截断的字符串。
鉴于上述代码流程,如何将“John O'Brady 的 ASP 博客”保存到数据库中?

我以为我正在保存“John O'Brady 的 ASP 博客”,但这不起作用。

4

4 回答 4

2

你的问题很模糊。你为什么要编码撇号?它会破坏你的输出吗?

最好的方法是将您的数据按原样提交到数据库......糟糕的 JavaScript 注入、撇号、html 标记等等。然后,您只需对输出进行编码。

Server.HtmlEncode(strUserText)

此外,如果您使用的是最新版本的 .NET,您可以按如下方式对输出进行编码

<%: strUserText %>

(假设您之前在视图中设置了 strUserText 字符串变量)

于 2011-09-20T03:02:37.073 回答
0

不要这样做:

var strUserText = uSettings.replace(/'/g, "&apos;")

原因是 HTML 使用“&”字符来分隔查询字符串和表单字段。

我建议您按原样发布您的数据,并处理替换服务器端。

sUserSettings = request.form("strUserSettings ").Replace("'", "whatever")
于 2011-10-04T12:12:43.243 回答
0

在任何情况下,您都不应“按原样”输入数据并将其插入数据库;严重的禁忌。至于撇号 - 你可以看看这个解决方案:

在参数中调用带有撇号的存储过程不起作用

您的问题含糊不清,但上面的链接应该让您了解解决方案在于 SQL 查询的制定方式这一事实。最重要的是,您需要对输入进行适当的数据验证/过滤,并在将其插入数据库之前对其进行编码。

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

于 2011-09-20T03:26:24.887 回答
-1

尝试将John O'Brady 的 ASP 博客保存到数据库中时,请使用以下 Javascript 函数:

Server.HTMLEncode("John O'Brady's ASP Blog")

上面的结果将是John O&#39;Brady&#39;s ASP Blog

当从数据库中检索并想要显示它时,使用

Server.HtmlDecode(NameField) 其中 NameField 是表中列的名称。

这将导致 John O'Brady 的 ASP 博客

于 2011-09-20T02:43:51.833 回答