【发布时间】:2011-08-11 04:45:50
【问题描述】:
客户端脚本正在将一些 HTML 从服务器拉入页面内弹出窗口(阴影框等)。
我怀疑这是通过 jQuery 的 .html() 某处完成的。
长话短说,以下失败:
<script type="text/javascript"> myFunc(); </script>
很遗憾,我无法修改客户端代码(因此我无法通过替代通道传递和执行 JavaScript 代码)。
我完成这项工作的一种方法是将以下内容作为 HTML 的一部分返回:
<img src="." onerror=" myFunc(); "/>
事后看来,我本可以使用有效的图像 URL 和 onload,但如果这两个事件都有效,我宁愿使用错误的路径来使浏览器立即引起调用(并减少一次 HTTP/缓存查找)。
关于目前的设置,我想听听您对此的看法,或许还有更好的解决方案。
编辑:
假设这是我不能乱用的客户端代码:
jQuery.get('test.php',function(data){
jQuery('#popup').html(data);
});
这是test.php返回的数据:
Hello!
<script type=text/javascript> myFunc(); </script>
以下是我提出的解决方案:
Hello!
<img src="." onerror=" myFunc(); "/>
【问题讨论】:
-
我很确定如果页面是通过 AJAX 拉入您的 HTML,那么您必须通过某种事件触发您的 JS。你唯一的缺点是它是一个额外的服务器 ping。
-
你知道你基本上是在问如何进行潜在的 XSS 攻击吗?
-
@BalusC - 如果它在同一个域上运行,为什么会是 XSS?我只需要从 HTML 块中执行 JS 部分。
-
@DA - 我仍在提取 HTML;
img标签在返回的 HTML 中! -
图像 SRC 属性将 ping 服务器以请求图像
标签: javascript popup wmd shadowbox