gpt4 book ai didi

asp.net - Data URI 被 AntiXssEncoder 双重编码

转载 作者:行者123 更新时间:2023-12-04 17:18:22 24 4
gpt4 key购买 nike

我们有一个 ASP.Net Webforms (.Net 4.7.2) 站点。我们启用了 built-in XSS protection通过添加到 web.config:

   <httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder" ... />

这工作正常,除了在一个地方:我们有一些代码生成一个小图像,并使用数据 URI 将它嵌入到页面中:

(aspx)

<asp:Image ID="image1" runat="server">

(C#)

  image1.ImageUrl = dataURI;

dataURI 通常是这样的:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMMAAADDAQMAAAA ...

这在没有 AntiXssEncoder 的情况下工作正常,但在适当的位置呈现的 HTML 变成:

<img id="image1" src="data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA ...

...所以src的“header”中的不安全字符已经被编码,图像不会在浏览器上显示。

我如何为这个图像对象禁用 AntiXssEncoder,或者以其他方式强制 Data URI 到达浏览器而不被重新编码?此特定页面上没有用户输入。

最佳答案

一种方法是“自己动手”。引用:https://stackoverflow.com/a/7406983/11534

基本上

  1. 使用图像数据在您的代码隐藏文件中声明一个公共(public)属性。让我们说“ImageData”(public string ImageData {get;set;})并将其设置为保存 base64 数据。
  2. 替换<asp:Image ID="image1" runat="server"><img src="<% =ImageData %>" />

关于asp.net - Data URI 被 AntiXssEncoder 双重编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67839146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com