HTML注入其他人的网站?

时间:2014-03-05 15:26:31

标签: html demo html-injections

我有一个嵌入网站的产品类似于Paypal(客户将我的按钮添加到他们的网站,用户点击此按钮,一旦服务完成,我将他们重定向回原始网站。)

我想向客户演示我的技术而不实际修改他们的实时网站。为此,是否可以配置http://stackoverflow.myserver.com/,以便在无缝注入我的按钮时镜像http://www.stackoverflow.com/

意思是,我想演示在实时网站上使用我的按钮的体验,而不是在我的服务器上实际重新托管客户的数据库。

我知道这里有安全问题,所以只要我们符合要求,请随时提及。我不需要为使用HTTPS的网站演示此内容。

更具体地说,,我想通过在页面中注入Paypal按钮来展示Stackoverflow问题的财务奖励。如何在不修改http://stackoverflow.myserver.com/的情况下https://stackoverflow.com/演示此内容?

请求重新审核:我已根据您的要求对问题进行了重新编写。如果您仍然认为它过于宽泛,请通过在下面发表评论来帮助我理解您的推理。

更新:我在How to rewrite URLs referenced by Javascript code?发布了后续质询

UPDATE2 :我放弃了bookmarklet和Greasemonkey的想法,因为它们需要客户端安装/修改。我们需要尽可能无缝地完成这个过程,否则很多过程会被这个过程关闭,不会让我们投球。

3 个答案:

答案 0 :(得分:3)

我建议使用HTTP handler创建代理。

ProcessRequest中,您可以执行HttpWebRequest获取另一方的内容,更改内容并将调整后的html返回给浏览器。您可以重写内部的URL以允许从原始源加载图像等。

public void ProcessRequest(HttpContext context)
{
  // get the content using HttpWebRequest
  string html = ...

  // alter it

  // write back the adjusted html
  context.Response.Write(html);
}

答案 1 :(得分:1)

如果您在客户端进行演示并希望快速入侵它,您可以使用一些jQuery来实现它。我只是为了演示而在SO标志后打了一下按钮。您可以在控制台中输入:

$('head').append('<script src="https://www.paypalobjects.com/js/external/dg.js" type="text/javascript"></script>')
$('#hlogo').append('<form action="https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay" target="PPDGFrame" class="standard"><label for="buy">Buy Now:</label><input type="image" id="submitBtn" value="Pay with PayPal" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif"><input id="type" type="hidden" name="expType" value="light"><input id="paykey" type="hidden" name="paykey" value="insert_pay_key">')
var embeddedPPFlow = new PAYPAL.apps.DGFlow({trigger: 'submitBtn'});

enter image description here

现在,我不确定我是否做错了,因为我在最后一部分出现了这个错误:

Expected 'none' or URL but found 'alpha('.  Error in parsing value for 'filter'.  Declaration dropped.

但无论如何,如果你正在演示你可以这样做,也许作为一个计划B.(你也可以写一个用户脚本,所以你不必打开控制台,我猜?) / p>

答案 2 :(得分:-1)

在玩了很长时间后,我最终做了以下事情:

  1. 动态重写HTML和JS文件。所有其他资源均由原始网站托管。
  2. 对于HTML文件,请注入一个<base>标记,指向要重定向的网站。这将导致浏览器自动将相对链接(在HTML文件,CSS文件甚至Flash!中)重定向到原始网站。
  3. 对于JS文件,应用正则表达式来修补指向写入URL的特定代码段。我在浏览器中加载重定向的页面,查找损坏的链接,并找出需要修补哪个JS部分来纠正问题。
  4. 这听起来比实际上要困难得多。平均而言,修补每个页面的工作时间不到5分钟。

    重大发现是<base>标签!它代表我纠正了绝大多数链接。