Javascript asp.net中撇号的编码字符串

Javascript asp.net中撇号的编码字符串,javascript,asp.net,vb.net,apostrophe,Javascript,Asp.net,Vb.net,Apostrophe,我在尝试解决与撇号相关的问题时遇到问题。 我找了这么多,但找不到任何对我有帮助的东西 我的客户端javascript代码是: var strUserText = uSettings.replace(/'/g, "'") 执行上述行后,表单执行提交 document.form1.submit(); 在代码隐藏中,类检索这些值: sUserSettings = request.form("strUserSettings ") 结果是一个半截断字符串。 鉴于上述代码

我在尝试解决与撇号相关的问题时遇到问题。 我找了这么多,但找不到任何对我有帮助的东西

我的客户端javascript代码是:

var strUserText = uSettings.replace(/'/g, "'")  
执行上述行后,表单执行提交

document.form1.submit();  
在代码隐藏中,类检索这些值:

sUserSettings = request.form("strUserSettings ")  
结果是一个半截断字符串。 鉴于上述代码流程,如何将John O'Brady的ASP博客保存到数据库中


我以为我是在救约翰O'布雷迪',但这不起作用。

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

Server.HTMLEncodeJohn O'Brady的ASP博客

以上结果将是John O&39;布雷迪&39岁;s的ASP博客

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

Server.HtmlDecodeNameField 其中,NameField是表中列的名称


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

您的问题相当模糊。你为什么要对撇号进行编码?它是否破坏了你的输出

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

Server.HtmlEncode(strUserText)
此外,如果您使用的是最新版本的.NET,则可以对输出进行如下编码

<%: strUserText %>

假设strUserText字符串变量在视图中设置得更早,在任何情况下都不应按原样进行数据输入并将其插入数据库;严重禁止。关于撇号,您可以查看以下解决方案:

您的问题是模糊的,但是上面的链接应该会提示您,解决方案在于SQL查询的公式化方式。最重要的是,您需要实现正确的输入并对其进行编码

不要这样做:

var strUserText = uSettings.replace(/'/g, "&apos;")
原因是HTML使用&字符来分隔查询字符串和表单字段

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

sUserSettings = request.form("strUserSettings ").Replace("'", "whatever")

嗨,这在你的Javascript中吗?在我看来,这不像服务器端代码。前两个代码块是javascript.sUserSettings=request.formstrUserSettings在服务器端代码中。strUserText是如何放入表单中的strUserSettings字段的?输入的是什么类型的数据,如何输入?这里使用JavaScript有什么特别的原因吗?请不要这样做。HTMLEncode要在HTML中显示输入时对其进行编码。不要这样保存它。@aquinas我同意。。。看看我的答案。@aquinas为什么不使用这个?有什么特别的原因吗?我已经在几个地方使用过了,所以如果这个原因足够令人信服,我可能需要全部更改。是的。我有很多理由。假设我想在数据库中找到这个?你是说我必须这么做:从BlogName='johno&39;布雷迪&39岁;s的ASP博客'。我希望我记得哪些字符需要HTML编码。除了你的应用程序,还有人会使用这个数据库吗?我希望他们永远记住HTML编码。有没有想过要把它导出到其他格式?我希望你记得先解码Html?我希望当你更新这个,你总是记得html解码,然后html编码,而不仅仅是html编码。否则,您将使用双重/三重/etc HTMLEncode。。好啊做你想做的事:。也许我错了。你永远不知道我需要一些客户方面的东西。。Server.HtmlEncode无法在客户端工作为什么需要在客户端工作?您的服务器应该正在向最终用户发送干净的数据。。。如果你一直等到客户端,你已经等得太久了。我认为这是错误的。您应该将数据存储为与显示无关的,因此允许您的数据以将来可能需要的任何形式输出。发送到数据库的任何文本都不会损害数据库或底层应用程序。通过对输出进行编码,您可以保护您的查看者免受javascript攻击。如果您担心javascript攻击,请不要这样做,对输出进行清理和编码是防止这种情况发生的唯一方法。如果您担心SQL注入攻击,那么您需要做的就是使用一个好的ORM Linq to SQL/NHibernate/Entity框架或参数化查询。所有数据都应该被视为可疑数据,因为您事先不知道它将采用何种形式。您也不知道未来的开发人员可能会对现有体系结构进行哪些更改。我们在层中实现安全性,但我没有找到一个好的理由在数据库中故意放置可疑的输入;一行代码可以解码它。并且仍然可以对编码数据执行搜索。99%的时间参数化查询就足够了。然而,我们在这里没有足够的架构细节,就像我说的,额外的一层成本并不高,特别是当我们不知道将来如何适应时。无论哪种方式,询问者都需要更好地解释问题: