【セキュリティー対策】公開前にチェック!現場のプロが守る40のサイト安全対策

ホームページは、単なるデザインや情報発信のツールではなく、クライアントの集客・採用・ブランディングといった事業成長に直結する重要な資産です。
私たちは「作って終わり」ではなく、「成果につながる運用まで見据えた設計と品質管理」を徹底することを大切にしています。

これまでの制作の中では、時に意図しないミスや見落としが発生し、クライアントにご迷惑をおかけしてしまった経験もあります。
そうした失敗も一つ一つ真摯に振り返り、再発防止の仕組みや確認項目を常にアップデートし続けてきました。

納品前には、ディレクター・デザイナー・エンジニア・ライターなど、各分野の担当者が連携し、複数の視点から徹底的にチェックを行います。
本記事では、私たちが実際の現場で活用している「35の確認ポイント」を公開し、クライアントに安心していただける制作体制の一端をご紹介します。

目次

1.コンテンツ

1-1.原稿通りになっているか

校正後原稿通りにマークアップされているか確認します。また、原稿に間違いがある場合もあれば都度確認します。

1-2.表記ゆれがないか

漢字とひらがな、半角と全角、大文字と小文字、記号など表記ゆれやスペルミスはないか確認します。

1-3.意図しない日付の表記ゆれがないか

2023年1月1日、2023.01.01、2023/01/01 など

1-4.誤字脱字がないか

急遽変更があったり、ミスや漏れは思わぬところで発生することがあるため、再度確認します。

1-5.制作過程にダミーとして入れていたテキストや画像、写真がないか

有料素材のカンプデータは本番環境でも使用してしまうとクライアントにも迷惑をかけます。ディレクターは素材の有無を確認してコーダーに共有します。

2.マークアップ・コーディング

2-1.メタ情報(title、meta description)が記述されているか

ディレクターから共有されたメタ情報を記載します。プラグインは使用しない。

2-2.OGPが適切に設定されているか、SNSでの表示確認

SNSでの表示も確認します。

2-3.構造化データ

人間が書いたテキストに対して、正しく検索エンジンが認識するのは難しいです。ウェブページの情報を検索エンジンが理解しやすい形で<head>記載します。

<script type="application/ld+json">
{
 "@context": "http://schema.org",
 "@type": "LocalBusiness",
 "name": "企業名",
 "telephone": "電話番号",
 "url": "ホームページのURL",
 "address": {
 "@type": "PostalAddress",
 "addressCountry": "JP",
 "postalCode": "郵便番号",
 "addressRegion": "都道府県",
 "addressLocality": "市区町村",
 "streetAddress": "番地"
 }
"sameAs": [ <!-- 関連サイトやSNS -->/**/
    "サイト名",
    "https://www.facebook.com/〇〇",
    "https://twitter.com/〇〇",
    "https://instagram.com/〇〇"
  ]
}
</script>

以下のサイトで設定できているか確認します。

Google for Developers
構造化データ マークアップをテストする | Google 検索セントラル  |  Google for Developers 構造化データの実装に問題がないか「スキーマ マークアップ検証ツール」でご確認ください。Google 固有のエラーは「リッチリザルト テスト」から確認できます。

2-4.faviconの設定はしてあるか

基本的にはロゴを設定します。ロゴがない場合は、会社のコーポレートカラーを設定します。

2-5.正規表記(canonical)を指定しているか

重複コンテンツとならないよう、rel=“canonical”で正規URLを記述します。

2-6.見出しを適切に記述されているか

見出し(h1 h2 h3 h4など)を設定し、構造化されたコンテンツになっているか確認します。

2-7.リンク切れがないか、リンクは目的のページへ遷移しているか

途中でページの追加や最後に変更になることもあるため、最後に目で見るだけでなく、全ての遷移先が正しいか確認します。
外部サイトにはtarget=”_blank” を記述し、別タグで表示されるようにします。(指定がない場合)

2-8.alt属性を記述しているか

その画像の内容を正確に表現する内容を記載します。
画像に適切なalt属性を設定することで、画像が見えない時や音声で理解したい場合に画像の意味を伝えることができます。
装飾目的(罫線や背景など)など意味を持たない画像については、alt属性に「空白」(alt=””)を設定します。

2-9.アニメーションは遅延しすぎていないか、不快に感じないか

アニメーションはテンポよく作動しているか、気持ちよく動いているかもチェック。
スクロールしても作動せず、通り過ぎてから発動する仕様は大問題なので設定を修正します。

2-10.すべてのリンクにhover設定してあるか

すべてのリンクに、カーソルをのせると変化させる設定を施しているか確認します。

2-11.不要なコメントアウトは削除してあるか

不要なコメントアウトは削除してあるか確認します。

2-12.事例一覧やお知らせ一覧は、ページネーションがつけられているか

10記事で次のセクションに移管するよう設定し、カードタイプで3カラムは、9記事で次のセクションに移管するように設定します。

2-13.記事は一覧に戻る設定がおこなってあるか

「一覧に戻る」のボタンを設定し、記事に戻れるように設定します。

2-14.記事はダミーではなく、内容がいれてあるか

確認の際にダミーテキストは良いですが、本番環境では、ダミーは削除します。

2-15.お問合せは「Contact Form 7」を使用

指定がない場合は「Contact Form 7」を使用します。
よく使われる「MW WP Form」は開発終了を発表しています。

2-16.サンキューページの設定

「Contact Form 7 Multi-Step Forms」を使用せずに設定します。512文字以上のお問合せ内容を反映することができず、空白のお問合せが届くことがあります。

2-17.サイト表示・表示スピード

2-18.指定してあるバージョンのブラウザで問題なく表示されているか

「Mac」+「Chome」や「Windows」+「Edge」など、各ブラウザーやOSで別途ブラウザチャックシートで表示の確認します。

2-18.httpでアクセスすると、httpsへリダイレクトされるか

httpsへリダイレクトされているか確認します。

2-19.404は設定されているか

リンク先相違時に404ページに移管するか確認します。また、404ページに「ページに戻る」ボタンを設定が配置されているか確認します。

2-20.表示速度が極端に遅いページはないか

PageSpeed Insightsで確認します。

2-21.画像は圧縮したか

画像の圧縮を行い、動画を複数表示している、サイズの大きい画像を複数枚表示しているようなページは要注意です。

3.セキュリティ

3-1.ログイン画面のURLは変更しているか

SiteGuard WP Pluginの導入し、ログイン画面のURLを変更します。

3-2.SSL化はされているか

『常時SSL化(https化)』を設定します。安全対策をしていないサイトを利用すると、リスクがあるので注意が必要です。

3-3.WordPressプラグインの自動更新

自動更新は設定しません。また、1年以上更新されてないものは使用しないようにします。

3-4.不要プラグインの削除

使用してないプラグインは削除します。構築当初に「LightStart」を使用することもあるため、公開時には削除します。また、最初から入っているプラグインも削除します。

3-5.wp-login.php-login.phpへのBasic認証を設置する

ログイン画面にBasic認証を行います。

3-6.reCAPTCHA導入

ロボットによるスパムの投稿を防ぐ為やコンバージョンの数値が正しく取得できない為、設定します。

3-7.WordPressバージョンの外部閲覧時の非表示

WordPressのバージョン情報、CSSの情報を外から閲覧できないようにします。

//WordPressのバージョン非表示
remove_action('wp_head','wp_generator');

//CSSやJSのバージョン非表示
function remove_cssjs_ver2( $src ) {
    if ( strpos( $src, 'ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_cssjs_ver2', 9999 );
add_filter( 'script_loader_src', 'remove_cssjs_ver2', 9999 );

3-8.author情報でユーザー名を特定できないようにする

URLの後ろに「/?author=1」をつけてアクセスをすると、第三者にログインユーザー名が見えている状態になります。ユーザー名を特定されないために対策をします。

function theme_slug_redirect_author_archive() {
    if (is_author() ) {
        wp_redirect( home_url());
        exit;
    }
}
add_action( 'template_redirect', 'theme_slug_redirect_author_archive' );

「/?author=1」でアクセスし、TOPページにリダイレクトされれば完了です。

3-9.REST APIでユーザー名を確認できないようにする

「/wp-json/wp/v2/users」をつけてアクセスすると、第三者にログインユーザー名が見えている状態になります。ユーザー名を特定されないために対策をします。

function my_filter_rest_endpoints( $endpoints ) {
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P[\d]+)'] ) ) {
        unset( $endpoints['/wp/v2/users/(?P[\d]+)'] );
    }
    return $endpoints;
}
add_filter( 'rest_endpoints', 'my_filter_rest_endpoints', 10, 1 );

文頭に「code:rest_no_route」と表示されれば完了です。


私たちは、「経費」ではなく「投資」に導くホームページ制作会社です

「理想」論ではなく、直面している「現実」論に向き合います

この記事を書いた人

株式会社Pinesup。ウェブサイト制作から運用をメインに、ローカルメディアを運営。東三河1のメディアを作るために奮闘中。

インタビュー記事はこちらから

目次