之前領教過內容農場利用 Clickjacking (點擊刧持)騙讚的手法,包含藏在影片播放鈕上方,一播影片就按讚,甚至讓隱形按讚鈕追著滑鼠游標跑,在網頁點任何地方就強迫中獎。
最近常發現自已莫名訂閱了某些 FB 粉絲團,懷疑是某個讀文章會彈出「歡迎光臨」對話框的網站,今天再度遇到,決定一探究竟。(關於 Clickjacking 細節請參考前文:看影片偷按讚-Clickjacking活用入門,此處不多贅述)
該網路文章如下圖,開啟幾秒後彈出「Hi~~歡迎光臨」對話框並遮蔽網頁,點右上角的 X 關閉鈕才能繼續閱讀。一進門,馬上有人衝到你面前攔路高喊「伊來寫嘛謝」(いらっしゃいませ)根本超有事,其中肯定有鬼。先用瀏覽器 F12 開發者工具監看網路,果然在按下 X 關閉鈕的當下,網頁偷偷呼叫 Facebook 的 like.php,進行了一個點讚的動作。
用 Firefox 的 3D 檢視套件(Tilt 3D)一看,關閉鈕附近果然有重兵埋伏,由<html class="svg" id="facebook">證實該處有個隱形 IFrame 偷藏 Facebook 網頁。
基於好奇研究了做法,原來它用 IFrame 內嵌 Facebook 的按讚外掛,設定 CSS position: absolute + z-index: 1000 讓它浮在關閉鈕的上方,再設定 opacity: 0 使之隱形。用 F12 開發者工具將 opacity 改為 0.5 半透明,就可看到 Facebook 按讚鈕不偏不倚套在關閉鈕上方,IFrame URL還指定語系為保加利亞(locale=bg_BG),讓原本短短的讚或 Like 變成長長的 Харесвам,方便套版。
再追進去,Event Listener 顯示按讚 IFrame 的 click 事件被設定在 wp-content/plugins/like-jacking-ninja/include/public/js/reveal/jquery.reveal.js,jQuery Reveal 是對話框套件,按讚 IFrame 是不折不扣的對話框關閉鈕!而路徑的 like-jacking-ninja 寫得多淺白,Google 後發現居然是點擊騙讚的 Word Press 付費套件。
要防止網頁被別人內嵌做壞事,先前介紹過在 HTTP Header 加入 X-Frame-Options: DENY 或 SAMEORIGIN的防護技巧,但 Facebook 按讚外掛就專門用來內嵌的,基本上無從防起。騙讚只算不光明的小伎倆,並不危害資安,一笑置之便罷;但如果你的網頁操作涉及使用者的資產、權利或安全,就可能被有心人士以類似的 Clickjacking 手法拿來做壞事,記得加上 X-Frame-Options 防護保安康。