【问题标题】:Inject JavaScript code from asp.net page into html page in another domain将 asp.net 页面中的 JavaScript 代码注入到另一个域的 html 页面中
【发布时间】:2014-05-22 12:45:32
【问题描述】:

如何将 JavaScript 代码从 asp.net 页面注入到另一个域的 html 页面中,例如 http://www.codeproject.com/ 。如何从我的应用程序中将 JavaScript 注入到这个 html 页面中

我目前正在制作一个类似于 Pinterest 的插件,当从我的应用程序打开 html 页面时,它会自动在页面上显示一个书签,就像 Pinterest 一样。

下面是我用来注入 JavaScript 的代码

public partial class ViewPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
           string script = "javascript:(function(){var jsdom = document.createElement('script');jsdom.src = 'http://localhost:15064/Script/delete.js';document.body.appendChild(jsdom);})();";
           Response.Redirect(Server.UrlEncode(script));
    }
}

以下是执行上述代码后出现的错误

【问题讨论】:

标签: c# javascript jquery html asp.net


【解决方案1】:

相同的原始策略不允许您在其他人的域中运行脚本。如果不存在,任何人都可以在任何域中运行脚本,这将是一个重大的安全风险。

这条规则有几个*法律例外,您可以在下面阅读

https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

在与双方达成协议之外的唯一其他方式是违反同源,并且可能是非法的。

Xss 攻击很常见,并且按照您的描述进行。

【讨论】:

    【解决方案2】:

    您最接近的可能是一个书签:

    http://www.mattcutts.com/blog/javascript-bookmarklet-basics/

    这基本上是内联 javascript 的快捷方式。

    X-Ray Goggles 小书签就是一个常见的例子。您可以通过创建新书签并将位置粘贴为:

    javascript:(function(){var script=document.createElement('script');script.src='https://goggles.webmaker.org/en-US/webxray.js';script.className='webxray';script.setAttribute('data-lang','en-US');script.setAttribute('data-baseuri','https://goggles.webmaker.org/en-US');document.body.appendChild(script);})();
    

    这不会让您从应用程序注入,但它是一种从浏览器注入文档的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 2011-08-26
      • 2021-01-10
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多