标签: framebusting

Frame Buster Buster ......需要buster代码

假设您不希望其他网站在以下位置"构建"您的网站<iframe>:

<iframe src="http://example.org"></iframe>
Run Code Online (Sandbox Code Playgroud)

因此,您将反框架,帧破坏JavaScript插入到您的所有页面中:

/* break us out of any containing iframes */
if (top != self) { top.location.replace(self.location.href); }
Run Code Online (Sandbox Code Playgroud)

优秀!现在你自动"破解"或突破任何包含iframe.除了一个小问题.

事实证明,您的帧破坏代码可能被破坏,如下所示:

<script type="text/javascript">
    var prevent_bust = 0  
    window.onbeforeunload = function() { prevent_bust++ }  
    setInterval(function() {  
      if (prevent_bust > 0) {  
        prevent_bust -= 2  
        window.top.location = 'http://example.org/page-which-responds-with-204'  
      }  
    }, 1)  
</script>
Run Code Online (Sandbox Code Playgroud)

此代码执行以下操作:

  • 每次浏览器尝试通过window.onbeforeunload事件处理程序离开当前页面时,都会递增计数器
  • 设置一个通过每毫秒触发的计时器,setInterval()如果它看到计数器递增,则将当前位置更改为攻击者控制的服务器
  • 该服务器提供具有HTTP状态代码204的页面,这不会导致浏览器在任何地方导航

我的问题是 - 这更像是一个JavaScript拼图,而不是一个实际的问题 - 你怎么能打败破坏框架的破坏者呢?

我有一些想法,但在我的测试中没有任何效果:

  • 试图通过清除onbeforeunload事件onbeforeunload = null …

html javascript iframe framebusting

415
推荐指数
11
解决办法
13万
查看次数

框架Busting buster不能完全适用于IE

我一直在制作一个Frame破坏破坏者(名字中有什么,呵呵),它让我的用户保持在我的页面上并打开一个带有目标URL的新窗口.我正在使用Lightbox脚本来显示iframe,这就是我正在做的事情:

1)为所有.lightbox点击添加了一个事件,fe:

$('.lightbox').live("click", function(e) { 
  e.preventDefault(); 
  $('#redirectURL').val($(this).attr('href')); 
  $(this).lightbox(); 
}
Run Code Online (Sandbox Code Playgroud)

2)增加了一个破坏框架的破坏者:

<script type="text/javascript">
    var prevent_bust = 0  
    window.onbeforeunload = function() { prevent_bust++ }  
    setInterval(function() {  
      if (prevent_bust > 0) {  
        prevent_bust -= 2  
        window.top.location = 'http://server-which-responds-with-204.com'  
      }  
    }, 1)  
</script>
Run Code Online (Sandbox Code Playgroud)

3)修改了帧破坏破坏代码以满足我的需求,它们是:

  • 检测iframe是否要更改window.top.location
  • 如果是这样,请使用204服务器响应来防止这种情况发生
  • 打开一个新页面: window.open( $('#redirectURL', '_blank' );
  • 关闭灯箱: $('.jquery-lightbox-button-close').click();

到目前为止,这是我提出的:

var prevent_bust = 0  
window.onbeforeunload = function() { prevent_bust++ }  
setInterval(function() {  
  if (prevent_bust > 0) {  
    prevent_bust -= 2;
    redirectURL = $('#redirectURL').val();
    if(redirectURL != "") {
        window.top.location = 'http://www.****.com/ajax/nocontent.php'; …
Run Code Online (Sandbox Code Playgroud)

javascript iframe jquery framebusting

6
推荐指数
1
解决办法
1761
查看次数

PayPal与基于iframe的购物车集成

我们使用PayPal的Payments Pro NVP API在我们的网站上提供无缝的信用卡和PayPal处理.我们已经创建了一个基于iframe的购物车小部件,我们的客户将这些小部件放到他们的网站上,这样他们的用户就可以通过我们的Paypal帐户购买物

虽然信用卡交易工作正常,但当用户尝试使用PayPal帐户付款时,我们会发现问题.单击PayPal徽标时API会使用重定向,但PayPal的代码似乎运行了一个framebusting脚本,并且事务无法继续.

我正在寻求有关如何处理希望通过iframe支付PayPal的用户的建议或示例代码.一个选项是弹出一个新窗口,但随后它会使设计处于开放状态,因为用户可以在该窗口和包含iframe的窗口之间切换,并且可以想象购物车与PayPal窗口显示的内容不同步.

iframe paypal framebusting

5
推荐指数
1
解决办法
2万
查看次数

MSAL.js使用Microsoft帐户(login.live.com)在Azure AD B2C上获取TokenSilent

存在一个问题,login.live.com该问题阻止了使用身份提供者Microsoft帐户使用MSAL.js for Azure AD B2C 获取访问令牌。

当iframe(msalRenewFrame…)尝试在进行身份验证时https://login.live.com/oauth20_authorize.srfhttps://login.live.com/oauth20_authorize.srf尝试进行“框架无效”操作(导航作为主要网站的iframe的父级)。Chrome显示以下警告:

带有URL'https: //login.live.com/oauth20_authorize.srf ?client_id =的框架…尝试使用URL'http:// localhost:4200 /#/ dashboard ' 导航其顶层窗口。从跨域iframe导航顶级窗口将很快需要iframe收到用户手势。参见 https://www.chromestatus.com/features/5851021045661696

DoSubmit @ oauth20_authorize…
onload @ oauth20_authorize…

这使得主站点重定向,果然acquireTokenSilentacquireTokenBoisterous。开玩笑。

我试图沙箱msalRenewFrame…ifr.setAttribute("sandbox", "allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts")根据https://www.w3schools.com/tags/att_iframe_sandbox.asp。现在,主站点没有重定向,但现在Chrome显示错误:

不安全的JavaScript尝试从URL'https://login.live.com/oauth20_authorize.srf?client_id = …的框架尝试启动URL'http:// localhost:4200 /#/ dashboard ' 的框架的导航。顶层窗口是沙盒,但未设置“允许顶部导航”或“允许用户激活顶部导航”的标志。

我认为这种框架爆炸是出于兼容性原因而发生的(我们都知道如何将大量登录重定向到Microsoft服务中)。恐怕这并非易事。但是Chrome很快就会解决它,所以也许背后的团队https://login.live.com/oauth20_authorize.srf已经在使用它了。在此之前,Azure AD B2C与真实帐户和MSAL.js的组合已损坏,无法使用。

我已经在MSAL.js的问题267上发布了此发现,但是由于这不是MSAL.js的问题,我也将其发布在这里。我希望Microsoft客户团队的成员能够看到它,并且可以提供更多信息。


这就是我实例化MSAL的方式:

public initAndHandleRedirects() {
  const authority = `https://login.microsoftonline.com/tfp/${environment.msalConfig.tenant}/${environment.msalConfig.signUpSignInPolicy}`;
  this.clientApplication = …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 framebusting microsoft-account azure-ad-b2c azure-ad-msal

5
推荐指数
1
解决办法
2178
查看次数