【改ざん】見覚えのないコードが挿入されている。これは何?
作成・管理しているウェブサイトに身に覚えがないJavaScriptが挿入されている。
状況
管理しているウェブサイトに、見覚えのない不審なJavaScriptが<head>部分と</body>の前に挿入されている。
挿入されているJavaScriptのソースコード
<head>の後
<head><script>(function(){var b=window,f="chrome",g="wtsrt_",k="tbsd_",l="tbnd_",m="start",n="_wtsrt",p="_tbnd",q="CSI/";(function(){function h(a){this.t={};this.tick=function(a,d,c){this.t[a]=[void 0!=c?c:(new Date).getTime(),d];if(void 0==c)try{b.console.timeStamp(q+a)}catch(e){}};this.tick(m,null,a)}var a;b.performance&&(a=b.performance.timing);var r=a?new h(a.responseStart):new h;b.mobilespeed_jstiming={Timer:h,load:r};if(a){var d=a.navigationStart,e=a.responseStart;0<d&&e>=d&&(b.mobilespeed_jstiming.srt=e-d)}if(a){var c=b.mobilespeed_jstiming.load;0<d&&e>=d&&(c.tick(n,void 0,d),c.tick(g,n,e),c.tick(k,g))}try{a= null,b[f]&&b[f].csi&&(a=Math.floor(b[f].csi().pageT),c&&0<d&&(c.tick(p,void 0,b[f].csi().startE),c.tick(l,p,d))),null==a&&b.gtbExternal&&(a=b.gtbExternal.pageT()),null==a&&b.external&&(a=b.external.pageT,c&&0<d&&(c.tick(p,void 0,b.external.startE),c.tick(l,p,d))),a&&(b.mobilespeed_jstiming.pt=a)}catch(s){}})();})(); </script>
</body>の前
<script>(function(){var c=window,f=document,l="chrome",m="tran",q="external",r="webkitvisibilitychange",s="start",t="sens_",u="req_",w="rcv_",x="prerender",y="ntsrt_",z="ntplt1_",A="ntplt0_",B="nsfs_",C="mobilespeed",D="https://csi.gstatic.com/csi",E="https:",F="http://csi.gstatic.com/csi",G="dns_",I="con_",J="_se",K="_req",L="_rcv",M="_ns",N="_dns",O="_con",P="_",Q="?v=3",R="=",S="1",T=".",U=",",V="&tran=",W="&tbsrt=",aa="&srt=",ba="&s=",ca="&rt=",da="&p=s",ea="&npnv=",fa="&npn=1",ga="&it=",ha="&apa=1",ia="&action=", ja="&",X="";if(c.mobilespeed_jstiming){c.mobilespeed_jstiming.a={};c.mobilespeed_jstiming.b=1;var Y=function(b,a,e){var d=b.t[a],h=b.t.start;if(d&&(h||e))return d=b.t[a][0],void 0!=e?h=e:h=h[0],d-h},la=function(b,a,e){var d=X;c.mobilespeed_jstiming.srt&&(d+=aa+c.mobilespeed_jstiming.srt,delete c.mobilespeed_jstiming.srt);c.mobilespeed_jstiming.pt&&(d+=W+c.mobilespeed_jstiming.pt,delete c.mobilespeed_jstiming.pt);try{c[q]&&c[q][m]?d+=V+c[q][m]:c.gtbExternal&&c.gtbExternal[m]?d+=V+c.gtbExternal[m]():c[l]&&c[l].csi&& (d+=V+c[l].csi()[m])}catch(h){}var g=c[l];if(g&&(g=g.loadTimes)){g().wasFetchedViaSpdy&&(d+=da);if(g().wasNpnNegotiated){var d=d+fa,n=g().npnNegotiatedProtocol;n&&(d+=ea+(encodeURIComponent||escape)(n))}g().wasAlternateProtocolAvailable&&(d+=ha)}var p=b.t,ka=p.start,g=[],n=[],k;for(k in p)if(k!=s&&0!=k.indexOf(P)){var v=p[k][1];v?p[v]&&n.push(k+T+Y(b,k,p[v][0])):ka&&g.push(k+T+Y(b,k))}delete p.start;if(a)for(var H in a)d+=ja+H+R+a[H];(a=e)||(a=E==f.location.protocol?D:F);return[a,Q,ba+(c.mobilespeed_jstiming.sn|| C)+ia,b.name,n.length?ga+n.join(U):X,d,ca,g.join(U)].join(X)},Z=function(b,a,e){b=la(b,a,e);if(!b)return X;a=new Image;var d=c.mobilespeed_jstiming.b++;c.mobilespeed_jstiming.a[d]=a;a.onload=a.onerror=function(){c.mobilespeed_jstiming&&delete c.mobilespeed_jstiming.a[d]};a.src=b;a=null;return b};c.mobilespeed_jstiming.report=function(b,a,e){if(f.webkitVisibilityState==x){var d=!1,h=function(){if(!d){a?a.prerender=S:a={prerender:S};var g;f.webkitVisibilityState==x?g=!1:(Z(b,a,e),g=!0);g&&(d=!0,f.removeEventListener(r, h,!1))}};f.addEventListener(r,h,!1);return X}return Z(b,a,e)};var $=function(b,a,e,d){return 0<e?(d?b.tick(a,d,e):b.tick(a,X,e),!0):!1};c.mobilespeed_jstiming.getNavTiming=function(b){if(c.performance&&c.performance.timing){var a=c.performance.timing;$(b,N,a.domainLookupStart)&&$(b,G,a.domainLookupEnd,N);$(b,O,a.connectStart)&&$(b,I,a.connectEnd,O);$(b,K,a.requestStart)&&$(b,u,a.responseStart,K);$(b,L,a.responseStart)&&$(b,w,a.responseEnd,L);if($(b,M,a.navigationStart)){$(b,y,a.responseStart,M);$(b, B,a.fetchStart,M);var e=c[q]&&c[q].startE;!e&&c[l]&&c[l].csi&&(e=Math.floor(c[l].csi().startE));e&&($(b,J,e),$(b,t,a.navigationStart,J));$(b,A,a.loadEventStart,M);$(b,z,a.loadEventEnd,M)}}}};})(); </script><script>(function(){var a=window,b="default_experiment",c="load",d="ol",e=a.mobilespeed_jstiming,f=e.load;a.top==a&&a.addEventListener(c,function(){f.name=c;f.tick(d);e.getNavTiming(f);setTimeout(function(){e.report(f,{e:b})},300)},!1);})(); </script></body>
原因・対処法
このJavaScriptは、サイトが改ざんされた等の管理者の不備によるものではありません。
閲覧者の閲覧環境によるものです。
このJavaScriptは、「モバイル版 Google Chrome」利用者が「データ使用量を節約」機能をONにしている場合に自動的に挿入されています。
データ使用量を節約とは?
Googleが提供するモバイル端末向けのデータ圧縮サービスです。モバイル通信をGoogleのサーバーが仲介して、画像ファイルを圧縮するとともにその他の最適化(JavaScriptの挿入)を行っています。
また、デスクトップ版でもChrome拡張機能「データセーバー」を使用していると同様の事例が発生します。
ディスカッション
コメント一覧
まだ、コメントがありません