【问题标题】:ASP.NET XML to Word templateASP.NET XML 到 Word 模板
【发布时间】:2018-01-10 06:19:10
【问题描述】:

我正在开发一个 ASP.NET WebForms 应用程序。客户端通过 excel 宏创建 XML 字符串。他/她想将此 XML 复制粘贴到应用程序中的多行文本框中。单击按钮后,需要解析 XML 并将其插入到 word 模板中。我以前没有使用过 XML,我不确定这是否可以做到。忘记这样做的冗余。这是业务要求。我建议将 XML 放入文件并使用文件上传控件,我可以加载 XML 并将其插入到 word 中。

最初我尝试过:

aspx

<asp:TextBox ID="XMLTxt" runat="server" TextMode="MultiLine"></asp:TextBox>
<asp:Xml ID="XMLComp" runat="server" ></asp:Xml><br />
<asp:Button ID="XMLBtn" runat="server" Text="Parse XML" OnClick="XMLBtn_Click"/>

在后面的代码中,我没有在 XMLBtn_Click 方法中添加任何内容。 我在想,当我在文本框中复制 xml 并单击按钮时, 因为我在方法中没有任何东西,所以它不应该做任何事情。

但是我收到了这个错误:

A potentially dangerous Request.Form value was detected from the client
(LoginView1$XMLTxt="<?xml version="1.0" ...").

所以我倾向于认为这样是行不通的,我需要采取不同的方式。

我想要的是,当我单击按钮时,所有 XML 都会进入一个字符串,我可以将其附加到我的 word 文档中,并希望这些数据能够在 word 文档中正常显示。但我很确定这是一段很长的时间,而且我遗漏了一些信息。

【问题讨论】:

  • 您正在处理具有特殊字符的 html(请参阅:en.wikipedia.org/wiki/…)。所以看起来你需要使用:Net.System.Net.WebUtility.HtmlEncode(string) 对字符串数据进行编码,然后使用:System.Net.WebUtility.HtmlDecode(string) 进行解码
  • 我不明白什么时候应该编码和解码。客户端将 xml 数据粘贴到文本框中并按下按钮。该按钮将导出已填充数据的 Word 文档。是否应该在将字符串粘贴到文本框之前对其进行编码?粘贴 xml 后我按下按钮的第二个,我得到了错误。
  • 是的。数据应放入 html 消息的正文中。我认为只有在放入 word 文档时才需要编码。文本框可以处理
  • 我真的不知道如何进行编码。因此,当我单击 XMLBtn 时,我会获取 XMLTxt 并将其加载到 XMLComp 中。你能告诉我如何编码吗?谢谢!
  • 字符串 XMLTxtEncoded = Net.System.Net.WebUtility.HtmlEncode(XMLTxt);

标签: c# asp.net xml


【解决方案1】:

ASP.NET 验证表单数据以防止 XSS 注入。由于 XML 文档包含 &lt;&gt; 符号,因此它没有通过验证。有关详细信息,请参阅A potentially dangerous Request.Form value was detected from the client

一般来说,我不建议您禁用单个页面的验证,因为它会在您的网站安全性中打开一个大漏洞。我建议您在提交表单之前对特定符号进行编码(例如在onsubmit 事件中)。然后在客户端解码并保存到文档中。

或者,您可以让最终用户自己直接将 XML 插入到文档中。例如,第三方RichEdit 控件允许在线编辑。

【讨论】:

  • 我尝试禁用文本框验证,而不是整个页面。 这可行,但仍然存在安全风险。问题:如果应用程序在 vpn 上运行怎么办?所以它不是一个公共应用程序,只是一个公司内部应用程序。这还会有风险吗?
  • 如果您的同事中有经验丰富的黑客,风险总是存在的。在服务器端对该字段内容实施额外验证,以确保其不包含 HTML 标签,例如
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
相关资源
最近更新 更多