HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

ワードプレスで携帯サイズに切り替えると広告が出る

スポンサーリンク

ワードプレスで携帯サイズに切り替えると広告が出るようになっているとの報告をうけまして。
原因究明と対策を書き残しておきます。

携帯サイズに切り替えるとポップアップ広告が出る時に考えられる原因



まずは、どうなると再現するのかを調べます。

テーマが原因


ワードプレスのテーマは、シンプルなサイズのテーマをカスタマイズして使っていました。
カスタマイズして使っていたので、カスタマイズしないオリジナルを持ってきて再現検査。
オリジナルでは広告が出ない。

もちろん、プラグインは、入れたまま。
このことから、プラグインが原因ではなく、テーマのカスタマイズ時に何か埋め込んだ可能背が浮かびます。

プラグインが原因


すでに最初の検証でプラグインは候補から落ちましたけど、プラグインが臭いときは、一度プラグインを全部殺します。
再現されなければ、プラグインの原因が考えられます。

また、プラグインの場合、悪意を持ったプラグインであれば、一度動かした時点でマルウェアを埋め込みますから、
プラグインを全部外して出る場合、プラグインが完全に候補から落ちたわけではありません。

対策として、もう一つワードプレスをインストールして、そちらにテーマを投げ込んで、プラグインなしで再現させてみます。

それで、再現されなければ、残念なことにプラグインが原因の可能性が残ります。

ワードプレス本体のスクリプトが原因


考えにくいですが、サーバーリリースのワードプレスに(簡単インストール)最初から埋め込まれていることもあります。
ただ、無料サーバー、無料ブログの場合ですけど。

無料を使った時点でそのリスクがあることはあきらめてください。

プラグインなどが原因でスクリプトに埋め込んで知らんふりするということも考えられます。

ソースを確認


クロームであれば、デベロッパーツールを使って、広告のタグがどこに入ってくるのか確認できます。



</body> の前に出す方式、</html>の前に出す方式、OnLoad で最後に追加する方式と様々ありますが、とりあえずトリガーを探す必要があります。

下2つの /body , /html を外しても広告が表示され撃ことから OnLoad が臭い。
ということは、javascript が動いているということになるので、サーバーからのアプローチは除外されます。

javascriptが動くということは、その javascriptを自分で呼び出しているということになります。

ここまでくれば、そのスクリプトを探せばいい。

ソースの解析


スクリプトを全部ダウンロードして、grep を使って OnLoad をトリガーにしているスクリプトを探します。
※grep とは、ディレクトリ内の指定のファイルを全部なめまわして、指定された文字列の部分をリストアップしてくれたり、文字列置換をしてくれる、とてもありがた~いツールです。窓の森などで grep で検索するといろいろ便利な機能を備えた grep ツールが出てきます。昔は、 grep ってコマンド手打ちだったよねぇ~・・・<遠い目

私の使っているのは、JGREP ですが、イマイチ使いにくいので他の便利そうなものを探してくださいwww

grep で探す前にどのページでも現象が出るということから共通で読み込んでいる header.php , footer.php , sidebar.php を目視で確認して 知らない javascript を呼び出してないか確認します。

まぁ、この時点でみつけたんですけどね。

<script type=”text/javascript” src=”https://ad.xdomain.ne.jp/js/server-php.js”></script>

ああ、xsomain の割り込み広告スクリプトか・・・xdomain の 無料サーバーでひな形を作ったらしい。

このほかにも 忍者アクセス解析、fc2のアクセス解析なども割り込むスクリプトを埋め込んだり、忍者アクセス解析は、無料で使わせる代わりに広告表示させろやって、ちゃんと断って出しているものもあります。

いずれにしても無料のものは、それなりにリスクを抱えます。

マルウェアに侵入されて、スクリプト本体やデータベースに虫を入れられていない限りこのあたりで発見できるはず。

まとめ


今回は、ソース分析の時点で スクリプトが起動していると判明したので、あとは自分で呼び出している知らないスクリプトを探せばいいということになり2時間程度で解決しました。

でも、前述のようにマルウェアなどの侵入されて、スクリプトそのものを書き換えられると奥が深く、とても除去できる状態ではなくなります。

ID,パスワードでセキュリティをたもっているものは100%破られるとおもってください。
IP検査などもうひとつ別の対策を埋めておくことが大事です。

今回は、外注さんが無料サーバーを使って本番のオリジナルを作っていたということが原因。最近は、デザイナーさんもプログラマーさんも素人あがりの方が多くなり、こういった基本的なセキュリティの甘さが目立ちます。

結婚式場で動画を有料で撮影してもらったのだけど、撮影したデータを消しちゃいましたって・・・
もう一度式を・・ってあのね、出席者全員を呼ぶわけ?それぞれの時間を割いてきてくれたのに、また?

アマチュアが3年程度で動画撮影技術を身につけて商売を始めたのでしょうけど、やっぱりね、基本ができてない。
技術は簡単だけど、それの運用には、それなりの経験が必要だということ。

プログラムやHTMLは切れても、ネストが切れていないとか。

つまり、HTMLの場合は、ほとんどがペアになっていて、その間にデータを書き込む。
だから、そのペアのバランスがあっているか一目で確認できるようにネストを切って見通しをよくしておく。
これは、経験値からくる技。

こういった動作を求められたときは、必ず、これを追加して欲しいと思うはず。だから、それがきてもいいように、ここに穴をあけておくとか。そういった経験値もとっても大事なプロの技。

って、何のはなしだっけ?www

ということで、知らない広告が出るようになったら、みずしらずのスクリプトを呼び出していないか確認してみよう。
その確認には、クロームのデベロッパーツールやGREPが便利だよって話でした。



スポンサーリンク

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

MW WP FORM のフックが効かない。

MW WP FORM のフックが効かない。 MW WP FORM のフックが効かない。MW WP FORM は、各種フックがあってカスタマイズが便利~とか言われているプラグインですが。。。マニュアルにはあるのにフックが効かないフックがかなりある

MW WP FORM のショートコードで出力される内容をカスタマイズする。

MW WP FORM のショートコードで出力される内容をカスタマイズする。 MW WP FORM のショートコードで出力される内容をカスタマイズしたくなりました。非表示フィールド type=”hidden” にデータをためておいて、それをメール送信する

WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所

WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所 WelCart 買い物かごのカスタマイズするとき、毎回テンプレートファイルを探すのでメモしておきます。WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所WelCart 買い物かごのカ

WelCart で投稿ページに商品購入欄を作る

WelCart で投稿ページに商品購入欄を作る WelCart の商品ページは、ご存知んごとくウルトラダサい。これをカスタマイズしないとなんとも素人っぽさの抜けないサイトになってしまう。WelCart で投稿ページに商品購入欄を作るときのモジュール

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクスとサーチコンソール。別にグーグルのアナリティクス、サーチコンソールでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクス。別にグーグルのアナリティクスでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せな