【问题标题】:Why does a site without AJAX work over HTTP but not with the Data URI scheme?为什么没有 AJAX 的站点可以通过 HTTP 工作,但不能使用 Data URI 方案?
【发布时间】:2013-05-20 11:31:51
【问题描述】:

p01's MATRAKA.

我对链接的 URI 提供的内容进行 base64 处理,并将其放入数据 URI:

data:text/html;base64,iVBORw0KGgoAAAANSUhEUgAABPkAAAABCAAAAACJPCS6AAADIElEQVR4Xm1UYW+qSBR9P6XJRpmBYZgBRIU3TbDdvm02Jlttt1uNL0EZC3kKZhhRW/vfd0Zst0nXD8O595x74N4Lfhuy6YgNE5lhkRRpuUZ3TbQoK7TAlTysOF5U1T3fS2ZsyiqXeVmEy3zP00iWm5BEK76U6rLLU5mFlJBWlPH8OZMNnieLX8+i3BZp+BshxECcGWkikzDZpnnp7JJaSSoe+Ojh1+rHKL+L43jwz93fk5vJmpLbQax/6vw93t2QOB4O0iZ+jic/bsiTkhuzaFkKIJnbCUgkbTuCw6mcsVcZSrQNZcvvOV2sblCH0vGCAHfRPqRuzx4BaKoadAgD/yN4+Uy9nZ2VrWV97/FOBLnF5rJMwBgY1KOkS4lHvU6XqMB3iW9Mgby8pKRNO9A6Qa/tw5kp2/0AaVfqdk1wmvCm3AHpUN8nak4U0QA6vvXBUPsTF/gQosa3+7NzPJ6NIIwmrOC7i1jPEnAV4s0qOYCKy9tCclEnK7DcFgu9s4s5qNEOvuZLUEPB5VYUFzv8aNf4MRriqhQSzGGUsQVu1sfI0SPEzIuCiz9OGeeEH/Weoyt2BwSb4MVWCF7I+3zNHRdGY522ezBKsChlIjkAok096KgJYwqjARNOP4rZR5uDprsoZVNqx4igeDYlx4FltTy11v9L8q/Jry/Aa830OxDpZvHjJYEJXuar1YgvJKAdops2a/yA9FUpDs3c18ke0MBULUCkVcL0XQitzHFPwu75bLzG+tNgRlatgGFNhUm7tjbSq/F7SPmcIbSMltFUWp5re67yr/HWdNWYTrA2PQVnSgYN2Dyx/O56xIdPrB/YHjGVBl0zz7V677UflVA57xl4122hmVrXJlCsxtxqQKN2Trdc6pIX9vRJqNPcOsOv4gO7VuInJbl+5xQTqZYYdXsOUHbmlWp+b46tfgAV8cB0dGVpZvzWzEv/g4Cp8RehF/4wvjeQoc5R/GdszKaDNp3hajuvpAAJTkWyu10nzxwsEEHCzFoZ8lyUOT0TeFasehpYMYT/cYR8IaHievZp+kejqXbhG5rgVVluWB/Cb/8C9spiFDxjYW52YXMgaWQ9Yz48aW1nIHNyYz0jIG9ubG9hZD1mb3IoYT1jLmdldENvbnRleHQoJzJkJyksaT1lPScnLFM9U3RyaW5nLmZyb21DaGFyQ29kZTthLmRyYXdJbWFnZSh0aGlzLGktLSwwKSx0PWEuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbMF07KWUrPVModCk7KDEsZXZhbCkoZSk+

Content-Type 适合,它与通过 HTTP 提供服务时使用的相同。但是当导航到 URI 时,Chrome 中什么也没有发生。甚至没有显示 Web 控制台错误消息。它适用于 Firefox。

为什么它可以通过 HTTP 在 Chrome 中运行,但不使用数据 URI 方案?

【问题讨论】:

  • 你能发布一个 jsfiddle 吗?我没有比 Firefox 和 Chrome 上的黑页更好的了(请参阅下面的答案)。你是如何让动画在 FF 上运行的?
  • @vcarel: Here's a JSFiddle,动画马上就可以了,我没有做任何特别的事情。
  • 我怀疑我在重新编码内容时做错了什么。使用提供用于编码字符串的表单的网站,我得到一个黑页,并且使用 Shell 中的 base64,浏览器似乎无法识别这是 HTML。您是否尝试放置缺少的 和 标签...?
  • 在我的 chrome 中链接工作正常..你更新了链接..!?
  • @MarmiK:使用数据 uri 方案在您的 chrome 中是否可以使用?

标签: javascript xss data-uri data-url


【解决方案1】:

出于安全原因,某些浏览器仅支持特定类型文件的数据 URI。 IE 专门只支持“下载资源”。

来自MSDN: 出于安全原因,数据 URI 仅限于下载的资源。数据 URI 不能用于导航、脚本或填充框架或 iframe 元素。

Here is a paper 特别是关于如何使用数据 URI 进行网络钓鱼以及浏览器的一些限制。

【讨论】:

    【解决方案2】:

    这基本上是因为源 HTML 不包含任何 <html><body> 标记。如果你把它们全部重新编码,你会得到更好的结果。

    【讨论】:

    • 奇怪的是,当它具有内容类型时需要它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多