混入はどこから起きるか
マルウェアの混入は、悪意がなくても起こります。出所の怪しいサイトから落とした素材、第三者からもらったZIP、古いライブラリの埋め込みなどが入口になり得ます。
とくにZIPはCSSやJS、画像をまとめて扱えるぶん、中に何が入っているか把握しにくくなります。便利さの裏で、確認していないファイルが混じりやすい点に注意が必要です。
閲覧者に届くという責任
アップロードしたHTMLやZIPは、共有URLを通じて閲覧者のブラウザで表示されます。そこに不審なスクリプトが含まれていれば、見た相手の環境で実行される恐れがあります。
共有は、見せると同時に動かす行為でもあります。自分が確認できていないコードを他人の環境で動かすことになる、という意識を持つと、混入チェックの重要性が見えてきます。
よくあるNG例と安全な直し方
アップロードファイルにマルウェアを混ぜない注意では、「検索に出さない」と「見られないようにする」を混同しないことが重要です。noindexやrobots.txtは検索エンジンへの指示であり、アクセス制限そのものではありません。
安全に共有するには、誰に見られると困るかを先に決め、URL共有だけで足りるのか、認証や期限が必要なのかを選びます。共有相手と機密度が決まったら、URLのみ・パスワード・メール認証・会社ドメイン認証のどれで渡すかを選びます。
- NG: 機密情報入りHTMLを認証なしURLで共有し、noindexだけで安心する
- OK: パスワード・メール認証・会社ドメイン認証で閲覧者を絞る
- NG: テスト用APIキーや社内URLをHTML内に残したまま渡す
- OK: 公開前に外部送信先、秘密情報、フォーム送信先を確認する
アップロード前の確認手順
混入を防ぐには、アップロードする前に中身を確認する手順を踏みます。すべてを完璧に検査するのは難しくても、出所と中身を意識するだけで多くのリスクは減らせます。
下記は共有前に行いたい確認の順序です。とくに自分で書いていないコードや、外部から取り込んだ素材には注意を払います。
- 素材の出所が信頼できるかを確認する
- ZIPの中身を展開し、想定外のファイルがないか確認する
- HTMLやJSに見覚えのない外部読み込みや難読化コードがないか確認する
- 使っているライブラリが古すぎないか確認する
- セキュリティソフトでスキャンしてからアップロードする
外部読み込みに注意する
HTMLが外部のスクリプトやリソースを読み込んでいる場合、その読み込み先が安全かどうかも影響します。信頼できないドメインからの読み込みは、後から中身を差し替えられる余地があります。
共有するページが何を読み込んでいるかを把握し、不要な外部依存は削るのが望ましいです。閲覧者の環境で動くものを減らすほど、混入や改ざんの余地も小さくなります。
ギガサイト便での扱い
ギガサイト便はトップページにHTMLやCSS、JS、画像を含むZIPをドロップすると、その場で共有URLが発行されます。アップロードしたものがそのまま配信されるため、混入チェックはアップロードする側の責任になります。
公開URLはHTTPSが自動で適用され、CDNのエッジ配信で表示が速い一方、中身の安全性はファイル次第です。クリーンな素材だけをまとめ、確認したうえでドロップする運用を徹底しましょう。
万一に備えた見せ方
確認しても見落としは起こり得ます。だからこそ、認証で見せる相手を絞り、公開期限で長く晒さないようにしておくと、影響範囲を抑えられます。
問題が見つかったときは、同じURLのままファイルを差し替えられるため、不審なファイルを安全なものへ素早く入れ替えられます。アクセスログで誰が開いたかを確認できる点も、事後対応の助けになります。
よくある質問
マルウェアはどこから混入しますか。
出所の怪しい素材、第三者からもらったZIP、古いライブラリなどが入口になります。悪意がなくても混入は起こるため、出所と中身の確認が欠かせません。
ZIPで共有するときに気をつける点は。
ZIPは中身を把握しにくいため、必ず展開して想定外のファイルがないか確認します。見覚えのないスクリプトや外部読み込みにも注意してください。
アップロードしたファイルの安全性は誰が確認しますか。
ギガサイト便はアップロードしたものをそのまま配信するため、混入チェックはアップロードする側の責任です。クリーンな素材だけを確認のうえドロップしてください。
問題のあるファイルを公開してしまったらどうしますか。
同じURLのままファイルを差し替えられるため、安全なファイルへ素早く入れ替えられます。公開期限や認証で影響範囲を絞り、アクセスログで閲覧状況を確認してください。
noindexを設定すれば認証は不要ですか?
不要ではありません。noindexは検索結果への表示を抑えるための指定で、URLを知っている人の閲覧を止める仕組みではありません。閲覧者を制限したい場合は認証が必要です。