September 29, 2024Programming

上鹹網會中毒嗎?談什麼是網頁兼論網頁可以對你的電腦做的事

很久以來,網上都流傳著經常上鹹網(成人網站)會中毒的說法。我有時看新聞也經常看到警察公布網絡騙案詳情時會說,受害人因為看到網頁顯示他的電腦中毒了而要下載防毒軟件(而這個防毒本身其實就是病毒)。

那麼,一個網頁(也就是你打開瀏覽器輸入網址後可以看到的頁面)可以對你的電腦做什麼事情呢?

回答這個問題前,首先要明白網頁的本質是什麼東西。所謂網頁,其本質就是一段純文本(plain text),跟打開記事本輸入文字後儲存成的txt是沒有本質區別的。

但是如果用特定格式寫純文本,而且用瀏覽器打開看的話,會呈現出特別的樣式。這種格式被稱為HTML(HyperText Markup Language)。HTML是一種標記語言(Markup Language),什麼是標記語言?很簡單,用某些符號來標記某些文字的作用,表述並定義網頁的內容。而這些符號被稱為tag。用tag包裹住文字的話,會呈現出預設的樣式(外觀)。 舉個例子,一個按鈕

<button>我是按鈕</button>
button
為什麼是這些符號?別問為什麼,都是當年瀏覽器廠商商量好的。這些預設的外觀可以用一種叫CSS的語言來自行定義,比如說我要這個按鈕是紫色的,就可以在開始的tag加上style屬性,並加上特定的內容(這些當然也是瀏覽器廠商規定的),像這樣:
<button style="background-color: #7e22ce">我是按鈕</button>
button
說到這裡,網頁還只是純文檔,其主要功用也就是看字的一個東西,無論它被CSS美化成怎麼樣,它也是不能對你的電腦做什麼的(除非你自己主動輸入資料)。

使網頁能做更多事的是JavaScript,一種可以在瀏覽器環境運行的編程語言(Programming language),這就跟前面說過的標記語言不同了。

JavaScript一般負擔的工作很多時候也是跟CSS一樣操縱網頁的外觀,但可以加進更多更複雜的自定義邏輯,包括瀏覽器廠商沒在css和html標準中加進去的一些效果,比如説拖動網頁元素、按了某個按鈕後將隱藏元素顯示出來等。比如本頁右上角像「三」字的導航按鈕,按一下即顯示導航列表,就是用上了JavaScript。

JavaScript也跟其他編程語言一樣,可以做任何計算的任務,可以修圖、可以計算分析數據。

但網頁內的JavaScript跟一般的電腦軟件不同的地方在於,網頁對你的電腦的任何讀取和操作都是要經過瀏覽器的,而瀏覽器為了保障你電腦的安全,對JavaScript可以做的事情有很多局限,比如它是不能直接讀取你電腦的文件,必須由用家自己選擇文件上傳[1](注意是上傳不是直接提供讀取該文件的權限,因此它最多改變的只是你上傳的副本),因此它是不能直接使你的電腦中毒的。

另一方面,網頁確實有機會能盜取你的資料,但那必須是用家自行輸入的,而不會是直接從你電腦硬盤裡偷。因此大多數詐騙網站都是釣魚網站,即假裝成別的網站(例如銀行)來引誘你輸入個人資料。

雖然網站是可以索取攝影機、麥克風,甚至分享視窗畫面的權限,但那也是經過瀏覽器 (的API) 來獲取的,JavaScript在你不允許前是不可能讀取到這些資訊的。

註:[1] 近年瀏覽器提供了本地文件系统 API,可以直接讀寫電腦特定文件夾的文件,但當然也需要用戶指定和提供權限。