【问题标题】:how to save html to a database field如何将html保存到数据库字段
【发布时间】:2010-05-26 15:37:55
【问题描述】:

我有一个tiny editor 网页,我的用户可以在其中使用这个编辑器,我正在将 html 保存到我的数据库中。

我在将此 html 保存到我的数据库时遇到问题。例如,如果有一个带有“'”的名称,或者如果有其他 html 字符“”等,我的代码似乎在插入时爆炸了。

是否有任何关于获取任意 html 并将其完全保留到 db 字段而不担心任何特定字符的最佳实践。

【问题讨论】:

  • 嵌入 Javascript 的能力是一个相当大的问题。
  • 我刚刚意识到,小编辑器似乎为你做这件事,所以这就是为什么我很困惑为什么没有我做任何事情一切都在工作

标签: html sql-server asp.net-mvc


【解决方案1】:

我想知道您是否正在构建完整的查询。而是使用参数化查询,这应该可以消除您的数据问题。

string sqlIns = "INSERT INTO table (name, information, other) VALUES (@name, @information, @other)";

SqlCommand cmdIns = new SqlCommand(sqlIns, db.Connection);
cmdIns.Parameters.Add("@name", info);
cmdIns.Parameters.Add("@information", info1);
cmdIns.Parameters.Add("@other", info2);
cmdIns.ExecuteNonQuery();

【讨论】:

    【解决方案2】:

    您是否使用SqlParameter 插入?如果是,你应该没有问题,检查一下。

    【讨论】:

    • 原则上是的,但是如果 SQL 的任何其他部分执行或假设数据库的内容,您应该始终对用户输入进行编码。
    【解决方案3】:

    您可以只对数据进行 HtmlEncode。 您将拥有一个 HttpContext.Current.Server 对象,因此在伪代码中您只需执行以下操作:

    Database.Save(HttpContext.Current.Server.HtmlEncode(myHtml));
    

    并检索它:

    myHtml = HttpContext.Current.Server.HtmlDecode(DataBase.Load());
    

    【讨论】:

    • 这似乎违背了在视图中进行编码的最佳实践 - stackoverflow.com/questions/2914062/…
    • 我刚刚意识到,小编辑器似乎为你做这件事,所以这就是为什么我很困惑为什么没有我做任何事情一切都在工作
    【解决方案4】:

    只是通读一下 - 您的问题实际上是在插入语句上,还是在 Web 服务器到达您的控制器之前就出现了问题?注意到您使用 asp.net-mvc 标记了问题,您可能需要确保已使用 [ValidateInput(false)] 属性修饰了控制器方法。

    【讨论】:

    • ...我同意 OMG Ponies 等人的观点,您真的需要确保您需要将 HTML 接受到您的数据库中。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多