在此Service Worker和iframe中发现代码。什么是iframe?

时间:2019-04-10 23:02:45

标签: javascript google-chrome iframe

大家晚上好。如果此摘要比大多数帖子要长一些,我谨此致歉。

我的chrome / google帐户在同步,连接到服务(分析> Twitter Analytics / Youbtube等)时遇到问题,并且出现了其他一些奇怪的行为。据我所知,一切似乎都不错,但是通过重置和全新安装保持不变的唯一事情是服务工作者。

我做了一些挖掘,发现它似乎是在下载并安装“额外内容”或串联“额外文件”,然后检查缓存并设置事件监听器,如果我没记错的话,这是服务工作者的目的?

但是,这能够引发网络错误,甚至可以编辑我的注册表以将某个URL列入黑名单,该URL设法将我自己的来源也列入了黑名单。 (我知道我需要编辑组策略来撤消此操作,但是我正在运行WIN10 Home,因此,如果有人可以在我可以找到的地方通过注册表找到有关修复策略信息的建议的话,将不胜感激!)

我不仅发现了这个假说,而且我刚刚注意到一个看起来很奇怪的iframe源,但我必须承认,我现在还不太熟悉iframe。所以我不得不问他们是什么?他们的目的是什么?为了安全起见,是否可以使用iframe来破坏站点/帐户/人,如果是的话,我将如何发现/防御这种iframe? iframe通常会出现在首页/ Google搜索/设置/任何地方吗?最后,iframe通常是否具有html之类的文档类型并包含JS?

有点long,但我希望引起您的兴趣!谢谢您,我将在下面发布我收集的内容。

-重置为chrome默认值 -干净安装Windows和Chrome浏览器 -清除Windows上的缓存,站点数据和临时文件夹 -咨询了Microsoft和Google

var EXTRA_FILES = ["/xjs/_/js/k=xjs.ntp.en_US.1cTcPGECf3w.O/m=jsa,ntp,d,csi/am=AABgA2BXEyY/rt=j/d=1/rs=ACT90oFx_YND15s54bVx_g4cq2JCyTGAcQ",
];
var CHECKSUM = "2y7yvr";

var BLACKLIST = [
  '/gen_204\?',
  '/async/',
  '/complete/',
];

var FILES = [
          '/'
].concat(EXTRA_FILES || []);

var CACHENAME = 'newtab-static-' + CHECKSUM;

self.addEventListener('install', function(event) {
  event.waitUntil(caches.open(CACHENAME).then(function(cache) {
    return cache.addAll(FILES);
  }));
});

 self.addEventListener('activate', function(event) {
    return event.waitUntil(caches.keys().then(function(keys) {
    return Promise.all(keys.map(function(k) {
      if (k != CACHENAME && k.indexOf('newtab-static-') == 0) {
        return caches.delete(k);
      } else {
        return Promise.resolve();
      }
    }));
  }));
});

 self.addEventListener('fetch', function(event) {
  event.respondWith(
      caches.match(event.request).then(function(response) {
        if (response) {
                    return response;
        }

    return fetch(event.request).then(function(response) {
          var shouldCache = response.ok;

          for (var i = 0; i < BLACKLIST.length; ++i) {
            var b = new RegExp(BLACKLIST[i]);
            if (b.test(event.request.url)) {
              shouldCache = false;
              break;
            }
          }

          if (event.request.method == 'POST') {
            shouldCache = false;
          }

                    if (shouldCache) {
            return caches.open(CACHENAME).then(function(cache) {
              cache.put(event.request, response.clone());
              return response;
            });
          } else {
            return response;
          }
        });
      })
  );
});



if (!Cache.prototype.add) {

  Cache.prototype.add = function add(request) {
        return this.addAll([request]);
  };
}

if (!Cache.prototype.addAll) {

  Cache.prototype.addAll = function addAll(requests) {
        var cache = this;

        function NetworkError(message) {
      this.name = 'NetworkError';
      this.code = 19;
      this.message = message;
    }
    NetworkError.prototype = Object.create(Error.prototype);

    return Promise.resolve()
        .then(function() {
          if (arguments.length < 1) throw new TypeError();

          requests = requests.map(function(request) {
            if (request instanceof Request) {
              return request;
            } else {
              return String(request);              }
          });

          return Promise.all(requests.map(function(request) {
            if (typeof request === 'string') {
              request = new Request(request);
            }

            return fetch(request.clone());
          }));
        })
        .then(function(responses) {
                              return Promise.all(responses.map(function(response, i) {
            return cache.put(requests[i], response);
          }));
        })
        .then(function() {
          return undefined;
        });
  };
}

if (!CacheStorage.prototype.match) {

  CacheStorage.prototype.match = function match(request, opts) {
    var caches = this;
    return caches.keys().then(function(cacheNames) {
      var match;
      return cacheNames.reduce(function(chain, cacheName) {
        return chain.then(function() {
          return match || caches.open(cacheName).then(function(cache) {
            return cache.match(request, opts);
          }).then(function(response) {
            match = response;
            return match;
          });
        });
      }, Promise.resolve());
    });
  };
}
**Iframe**

 <iframe src="https://clients5.google.com/pagead/drt/dn/" aria-hidden="true" style="display: none;">
 <!doctype html>
 <html lang="en"><head>
    <script src="dn.js"></script>
   </head>
   <body onload="javascript:gbar._drt.dn()">

 </body></html></iframe>

0 个答案:

没有答案