既存のページに対する改ざんで気づきにくいものの一つに、スタイル指定で通常のブラウザでは見えないようにしたコードを書き加えるものがあります。多くの場合不正な広告を挿入するもので、ブラウザでは見えなくても Google と Bing は文字列を拾うため意図しないサイトへリンクを張ってあるように扱われてしまいますし、意図しない文字列で当該サイトが検索できてしまう状態になります。さらに先述の「
User-Agent が検索エンジンのものであった場合にのみ不正な内容を表示するウェブ改ざん」
http://blog.goo.ne.jp/kagenanigashi/e/60cc5a3c371b5b6ffb28ed260c35cb82 と組み合わせ、User-Agent が Googlebot や Bingbot だったときだけに通常のブラウザに表示されないような改ざんが見られるようなものもあります。
非常に多く見かけるのは
<div style="position:absolute; left:-3813px; top:-2142px;">
のように大きな負の値の絶対位置指定を使って表示位置をブラウザの枠外に指定したものです。
これはあるサイトが受けていた改ざん被害の例ですが、いろいろ書き加えられているにもかかわらず通常のブラウザで表示すると
と何も変わったところは見られませんでした。しかしスタイル指定を無視すると
と表示され、改ざんされていることがわかります。
この例では改ざんにより書き加えられた部分は HTML 末尾でしたが、ほかには </head> 直下、<body> 直下もよく見ます。しかし中には HTML の途中へ書き加えているものもあります。次のものはその一例です。
「Let it Go~ありのままで~」という一単語の途中に </p> からはじまる改ざんコードが挿入されています。この改ざんを受けたサイトでは </p> <p> が一組加わるため改行が増えますが、改ざんにより加えられた文字列は表示されません。
注意深く見ていれば気付ける可能性はありますが、なかなか難しいと思います。これもスタイル指定を無視すると
と表示され異常があることがはっきりわかります。
注記:上記の例に挙げた2サイトには連絡を行い、何らの返信は得られていませんが、改ざん状況はすでに改修されていることを確認しています。攻撃者の意図に乗って広告を広めないため・被害を受けたサイトの特定を避けるため、多くの部分を伏せたり変更したりしています。
<div style="position:absolute; … のタイプ以外に
<p style="color:#fff;">
として背景色が白(#fff)である場合に白い文字で書いて見えにくくしたもの
<div style="display: none">
としてそもそもブラウザには表示させないが検索エンジンには拾われることを狙うもの
<marquee height="1" width="1" scrollamount="4000" scrolldelay="1000">
と1px×1pxの箱の中に押し込んで marquee するもの
などのスタイル指定で改ざんを隠すものも発見していますが、掲載できるサンプルを持っていないのでキャプチャは省略します。
こうした改ざんはブラウザにスタイル指定を無視させる表示をすると容易に発見できます。Lynx や w3m などのテキストブラウザを使うのが一つの方法ですが、Firefox では1つのタブだけスタイル指定を無視する設定ができますのでこれもお勧めしておきます。「表示」→「スタイルシート」→「スタイルシートを使用しない」です。
Google Chrome では Pendule
https://chrome.google.com/webstore/detail/pendule/gbkffbkamcejhkcaocmkdeiiccpmjfdi を入れ "Disable all styles" とするとほぼ同じことができますが、いくつかのスタイル指定は無視できないようです。
2018年6月4日追記
紹介した Google Chrome の拡張機能 Pendule が Chrome ウェブストアには存在するのにインストールできなくなり、インストール済の Chrome からも削除されました。長らく更新されていないため現在求められている仕様に適合しなくなったことが原因と思われ、拡張機能に不正が疑われているわけでは無さそうです。Manifest Version - Google Chrome
https://developer.chrome.com/extensions/manifestVersion には "Developers should currently specify 'manifest_version': 2:" とありますが、Pendule にはこの指定がありません。
代替には Pendule より高機能な Web Developer
https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm がありますが、安全性については不明です。