WordPressサイトは非常に多く使われているため、スパムボットやハッカーの攻撃対象になりやすいです。 今回は人気セキュリティプラグイン Wordfence を活用して、404攻撃 や xmlrpc.php への攻撃 などを防ぐ方法を初心者向けに解説します。 1. Wordfenceとは? Wordfenceは、ファイアウォール・不正アクセス制御・スキャン・リアルタイム監視 などの機能をもつ、WordPress専用のセキュリティプラグインです。 2. インストールと有効化の手順 WordPress管理画面 →「プラグイン」→「新規追加」 「Wordfence Security」で検索 「今すぐインストール」→「有効化」 3. ファイアウォールの最適化 Wordfence →「ファイアウォール」→ 上部の「最適化を完了」ボタンをクリックすると、PHP実行前にファイアウォールが動作し、より強力になります。 4. xmlrpc.php を無効化する方法 「xmlrpc.php」は古くから存在する通信機能で、今ではほとんど使われないにもかかわらず、ブルートフォース攻撃などの対象になりやすいファイルです。 ● Wordfence設定画面から無効化(項目がある場合) 「Wordfence」→「All Options」画面を開く 「Disable XML-RPC authentication」にチェック 「保存」ボタンをクリック ※ただし、使用中のWordfenceバージョンや日本語環境ではこの項目が表示されない場合があります。 ● 項目が見つからない場合:.htaccessで完全ブロック 以下のコードを、WordPressルートの .htaccess ファイルの末尾に追加してください。 <Files xmlrpc.php> Order Allow,Deny Deny from all </Files> これで xmlrpc.php への外部アクセスが完全にブロックされ、403エラーになります。セキュリティ対策として非常に有効です。 5. 404エラー攻撃への対策(Rate Limiting設定) ● 最近増えている404攻撃とは? ランダムな数字だけのURL(例:/50910413026)に対し、スパムボットが大量にアクセスしてくる現象が増えています。これにより: サーバーに無駄な負荷がかかる Google Search Consoleに404エラーが大量記録される SEOに悪影響を及ぼす可能性がある ● Wordfenceのレート制限設定で防ぐ 管理画面の「ファイアウォール」→「レート制限」タブを開き、以下の2項目だけを設定すればOKです。 ① クローラーのページが見つからない (404) が超過 推奨設定: ブロックする 効果: 不審な404連発クローラーを遮断 ② ルール違反時に IP アドレスがブロックされる期間 推奨設定: 1日 効果: 同じ攻撃元の再アクセスを1日間防止 この2つを設定するだけで、大量の404アクセスをしてくるスパムボットを自動でブロックできます。 6. 不審なアクセスをリアルタイムで監視する Wordfenceの「Live Traffic」機能を使えば、リアルタイムでアクセスの状況を確認できます。 不審なIPが見つかれば、管理画面から即座にブロックも可能です。 まとめ Wordfenceと.htaccessを活用することで、次のようなセキュリティ対策が可能になります: xmlrpc.phpへの攻撃をブロック 404攻撃を検知&自動ブロック サーバーの負荷軽減とSEO保護 セキュリティ対策は「あとから」ではなく「今すぐ」が鉄則。 ぜひこの記事を参考に、WordPressサイトを安全に保ちましょう。
-
Webサイトを検索エンジンに最適化するには、robots.txtの正しい活用が欠かせません。 このファイルを活用することで、SEOの効率化や不要なクロールの回避など、多くのメリットが得られます。 robots.txtとは? robots.txtは、検索エンジンのクローラーに対して「このページは見てOK」「ここは見ないで」と指示するためのファイルです。サイトのルートディレクトリに設置し、クローラーの動きを制御できます。 例えるなら、サイト内の「立ち入り禁止エリア」を伝える案内板のような役割です。 robots.txtを設置するSEO的メリット 不要なクロールを防ぐ:ログイン画面やシステムファイルなどを除外できる 重要なページのクロール効率を上げる:巡回リソースが集中しやすくなる サーバー負荷を軽減:無駄なアクセスを減らすことでリソース節約に XMLサイトマップを伝えられる:より正確なサイト構造を検索エンジンに伝達できる おすすめのrobots.txt記述例(WordPress向け) 以下のように書くのが基本です。sitemapのURLはご自身のものに変更してください。 コピー User-agent: * Disallow: /wp-admin/ Disallow: /wp-includes/ Sitemap: https://example.com/sitemap.xml 設置方法①:手動でrobots.txtを作成・アップロード メモ帳やエディタを使って、自分でファイルを作成・アップロードする方法です。 メモ帳やVS Codeなどでrobots.txtという名前でファイルを作成 上記の記述例をコピーして貼り付ける 以下の保存形式の注意点を確認 サーバーのルートディレクトリにアップロード https://example.com/robots.txt で表示されれば成功! 保存形式の注意点 文字コード: UTF-8(BOMなし) が推奨です。 Windowsのメモ帳で保存するとBOM付きになる場合があるため、VS CodeやTeraPadなどのエディタがおすすめです。 改行コード: 基本的にLF(Unix形式)推奨ですが、CRLF(Windows形式)でもGoogleは問題なく読み取れます。 ファイル名は必ず小文字で robots.txt とし、拡張子も忘れずに。 初心者におすすめの無料テキストエディタ VS Code:エンコーディングと改行コードが明示されていて安心 TeraPad:Windows向けの軽量エディタ。BOMの有無も指定可能 サクラエディタ:Windowsユーザー定番の多機能エディタ 設置方法②:WordPressプラグインで生成 初心者はプラグインを使うと簡単に設定できます。 Yoast SEOの場合 WordPress管理画面 → SEO → ツール 「ファイルエディタ」から robots.txt を作成 内容を記述して保存 All in One SEOの場合 All in One SEO → ツール → robots.txtエディタ 「有効にする」にチェックを入れる 内容を編集して保存 設置後の確認方法 以下のURLにアクセスして、ファイルが正しく表示されるか確認します。 コピー https://example.com/robots.txt さらに正確な動作確認をしたい場合は、Google Search Console の「robots.txt テスター」機能を活用しましょう。 よくある質問 Q. 設置しないとSEOに悪影響?→ 大きな悪影響はありませんが、無駄なクロールが発生しやすくなります。 Q. Disallowすればインデックスされませんか?→ いいえ。クロールを防ぐだけで、インデックスにはnoindexの使用が必要です。 Q. UTF-8(BOMなし)で保存する方法がわかりません→ 無料エディタ(VS CodeやTeraPadなど)を使うと、保存時に選べるので安心です。 まとめ robots.txtは検索エンジンに不要な巡回を制限する便利なファイル SEOの効率化やサーバー保護にも効果的 文字コードや改行コードなど、正しい形式で保存・設置するのが重要 検索エンジンに好まれるサイトづくりの第一歩として、robots.txtをぜひ活用してみてください!
-
WordPressのセキュリティを高めるには、ファイルやディレクトリのパーミッション(アクセス権)設定が非常に重要です。 この記事では、セキュリティの観点から推奨されるパーミッションの一覧と、実際にその設定に変更した場合に起こる可能性のある影響について、初心者にもわかりやすく解説します。 パーミッションとは? サーバー上で「誰が・どのファイルを・どう扱えるか」を指定する仕組みです。 通常、3桁の数字(例:644や755)で設定され、それぞれ「所有者」「グループ」「その他のユーザー」への権限を表します。 WordPressにおける推奨パーミッション一覧 対象推奨パーミッション備考 ルートディレクトリ755WordPressのインストールディレクトリ index.php644読み取り・実行のみ wp-config.php400 または 440読み取り専用。400は一部環境で注意 .htaccess444読み取り専用。プラグイン編集に制限あり wp-content/755テーマ・プラグイン・アップロード保存先 wp-content/uploads/755メディアアップロードに必要 wp-content/themes/・plugins/755各フォルダ内も同様 wp-includes/・wp-admin/755WordPress本体のコア部分 PHPファイル全般644書き込み不可で安全 robots.txt644検索エンジン制御ファイル .user.ini / php.ini444PHP制御ファイル。変更不要 注意点:パーミッション変更で影響が出る可能性のあるケース 対象推奨設定影響内容対策 .htaccess444SEOやWAF系プラグインの自動書き換え不可一時的に644にして編集後、戻す wp-config.php400一部サーバーで読み込みエラー(500)440で運用、問題なければ400へ robots.txt644SEO系プラグインの保存が失敗する場合書き換え時だけ666に変更 テーマやプラグインの .php ファイル644管理画面からの直接編集が制限される基本的に安全。編集時は一時的に666に まとめ WordPressサイトを守る基本は「正しいパーミッション設定」から。 uploadsディレクトリ以外は原則書き込みを制限することでセキュリティ強化に。 プラグインやテーマの自動更新・編集機能を使う際は、一部の権限だけ柔軟に運用するのがコツ。 安全でトラブルの少ないサイト運営のために、ぜひ一度、あなたのWordPress環境のパーミッションを確認してみてください。
-
WordPressサイトを守るために、2重認証(2FA)は欠かせません。特に管理者アカウントが狙われやすい昨今、Wordfence Securityプラグインの2FA機能を利用することで、ログインの安全性を格段に高められます。 2重認証(2FA)とは? 2FAは、通常のパスワード認証に加え、スマートフォンアプリなどによるワンタイムコードの入力を求める仕組みです。万が一パスワードが漏れても、第三者はログインできなくなるため、セキュリティ効果が非常に高いです。 Wordfenceで2FAを設定する手順 1. Wordfenceのインストールと有効化 管理画面の「プラグイン」→「新規追加」から「Wordfence Security」と検索してインストール、有効化してください。 2. Login Securityメニューにアクセス サイドバーにある「Wordfence」→「Login Security」をクリックします。 3. ログインセキュリティ設定画面での操作 「Login Security」画面が開いたら、次のように進めましょう。 画面中央に表示されるQRコードを、スマートフォンの認証アプリ(Google Authenticatorなど)でスキャンします。 アプリに表示された6桁の認証コードを、WordPressの入力欄に入力し、「Activate」をクリックします。 表示されたバックアップコードは必ず控えておきましょう。スマホが使えないときの緊急手段になります。 QRコードを認証アプリで読み取る 表示された6桁コードを入力 Activateボタンで2FAを有効化 バックアップコードを安全な場所に保存 4. 2要素認証権限グループの設定 「Login Security」画面の下部には、「2要素認証権限グループ」という設定項目があります。これは、ユーザー権限ごとに2FAを任意・必須・無効にするための設定です。 ユーザー権限オプション設定意味 Administrator必須(推奨)サイトの保護のために2FAを必ず使う Editorオプション任意で2FAを利用できる Authorオプション必要に応じて使える Subscriber無効一般ユーザーは通常不要 初心者の方には、まずは「administrator:必須」、それ以外は「オプションまたは無効」がおすすめです。 注意点とヒント ログイン不可時のリスクに備える:バックアップコードは必ず控えておきましょう。 スマホ紛失に注意:2FAアプリは新しい端末に移行できるようにしておくと安心です。 複数人管理なら2FAを推奨:「Users」タブから他のユーザーにも設定を促しましょう。 まとめ Wordfenceを活用した2段階認証(2FA)の導入は、WordPressのセキュリティを格段に高めることができます。QRコードを読み取ってコードを入力するだけで簡単に設定でき、特に管理者アカウントには強く推奨されます。 次回は、Wordfenceのスキャン機能やファイアウォール設定についても詳しく紹介していく予定です。どうぞお楽しみに!
-
WordPressサイトを運営していると、ある日突然アクセスできなくなったり、別のサイトへリダイレクトされたりするケースがあります。 これは単発的な攻撃ではなく、「継続的なスパム攻撃」の可能性があります。本記事では、攻撃者がどのようにサイトに侵入し、なぜ繰り返し狙ってくるのかを解説します。 1. WordPressへの攻撃は「夜中」に集中する スパムや改ざんといった攻撃は、日本時間の深夜〜早朝に集中する傾向があります。 管理者が寝ている時間帯を狙い、対応が遅れる 海外の攻撃者による自動化されたボットが多い 複数のIPから同時にアクセスされるケースも 実際に、未明2時〜5時頃に攻撃ログが集中しているサイトは少なくありません。 2. 突破されるきっかけは「パスワード総当たり攻撃」 攻撃者が最初に狙うのは、WordPressのログイン情報(IDとパスワード)です。 その手口の代表例が「ブルートフォースアタック(総当たり攻撃)」です。 自動化されたプログラムが、次々に考えられるパスワードを機械的に試していきます。 たとえば、以下のようなパスワードは非常に危険です: test, admin123, password などのよくある単語 test1 → 攻撃後に test2 に変えただけでは再突破される 推測しやすいID(admin, info, wpuserなど)との組み合わせ 重要:攻撃者は1回でもパスワードを突破すると、そのログイン情報や脆弱性をデータとして保存し、再び攻撃対象としてマークします。 3. なぜ何度も攻撃されるのか? 一度攻撃に成功したサイトは、「突破可能なサイト」として自動ツールに記録される可能性があります。 攻撃者ネットワークでリスト化され、繰り返し狙われる 攻撃後に改ざんファイルやバックドアを残されるケースも パスワードだけでなく、FTPやテーマ・プラグインの脆弱性を探られる そのため、表面的に直しただけでは根本的な解決にならず、再攻撃が数日〜数週間後に再発することも少なくありません。 4. パスワード変更だけでは不十分な理由 攻撃を受けた直後、「とりあえずパスワードを変えれば安心」と思っていませんか? 実はそれだけでは、再攻撃のリスクを防ぎきれません。 たとえば、次のような対応だけでは不十分です: test1 → test2 のような微修正 簡単な英単語+数字の組み合わせ WordPressのログインパスワードのみ変更し、FTPやデータベースは放置 推奨される対策: 英大文字+小文字+記号+数字を含む強力なパスワード ログインIDもadminなどから変更 FTP・データベースのパスワードも合わせて変更 2段階認証やログイン制限の導入 5. サイトを守るために今すぐできること 攻撃されてからではなく、攻撃される前の予防がなによりも重要です。 セキュリティプラグイン(Wordfence等)の導入 アクセスログの定期確認 不要なユーザー・テーマ・プラグインの削除 自動バックアップと復元手順の把握 まとめ WordPressへのスパム攻撃は偶然ではなく、自動化されたパターンに基づく計画的な侵入です。 一度突破されると再び狙われる可能性が高く、中途半端なパスワード変更では防げないことを理解することが重要です。 本記事を参考に、今すぐサイトの安全対策を見直してみてください。
-
突然、あなたのWordPressサイトが改ざんされ、見知らぬサイトにリダイレクトされるようになったら…? 本記事では、WordPressサイトがスパム攻撃を受けた実例として、全フォルダに不審なハッシュファイルが生成されたケースや、index.phpが改ざんされ別サイトにリダイレクトされる被害をもとに、管理画面のパスワード変更、phpMyAdminによる対応、エックスサーバーの自動バックアップによる復旧手順まで、具体的かつ再現可能な方法を順に解説します。 1. まずはパスワードを変更する WordPressに不正アクセスされた可能性があるため、管理画面のログインパスワードをすぐに変更しましょう。 管理画面に入れる場合は、「ユーザー」→「プロフィール」から簡単に変更できます。 管理画面に入れないときは? ログイン画面が改ざんされてアクセスできない場合は、phpMyAdminというツールを使って、WordPressのデータベースから直接パスワードを変更できます。 方法①:SQLで直接書き換える 以下のSQL文を使って、ユーザーパスワードを直接上書きできます。 コピー UPDATE wp_users SET user_pass = MD5('新しいパスワード') WHERE user_login = 'admin'; ※user_loginは該当ユーザーのログインIDに置き換えてください。 方法②:phpMyAdminの画面操作で手動変更する エックスサーバーのサーバーパネルから「phpMyAdmin」にアクセス 対象のデータベースを選択 wp_usersテーブルを開く 変更したいユーザーの「編集」をクリック user_passの欄で「関数」をMD5にして、新しいパスワードを入力 「実行」をクリックして保存 補足:方法①・②のどちらでもMD5という古い暗号化方式を使っているため、これはあくまで一時的な応急処置です。 このあと紹介する「3. 復元後は再度パスワードを変更する」の手順に従い、WordPress管理画面から正式にパスワードを再設定してください。 WordPressのユーザーデータに関する用語の補足 項目 説明 wp_users(テーブル) WordPressに登録されている全ユーザーの情報が入っているデータベースの表(テーブル)。 user_login(カラム) ユーザーのログインID(ユーザー名)を記録している項目です。 user_pass(カラム) ログインパスワードを記録する項目。暗号化された状態で保存されます。 MD5()(関数) パスワードを暗号化(ハッシュ化)する関数。応急処置として使用されます。 2. サーバーのバックアップから復元する 次に、改ざんされたファイルを安全な状態に戻す必要があります。エックスサーバーなら自動バックアップ機能で数日前の状態に復元できます。 エックスサーバーの「サーバーパネル」→「バックアップ」メニューを開く 対象ドメインを選択し、被害前の日付を指定して復元を申請 必要に応じて「MySQLデータベース」も復元対象に含める 注意:MySQLデータベースを復元すると、先ほどphpMyAdminで変更した新しいパスワードも古い状態に戻ってしまう点にご注意ください。 その場合は、再度phpMyAdminでパスワードを変更し直すか、復旧後に管理画面から再設定を行ってください。 可能であれば、管理画面にアクセスできる状態を確認してからデータベース復元を検討するのがおすすめです。 3. 復元後は再度パスワードを変更する ファイルやデータベースを安全な状態に戻した後は、WordPress管理画面から改めてパスワードを再設定しましょう。 これは万が一、以前のパスワードが漏洩していた場合に備えるためです。 4. 今後の対策:再発を防ぐには セキュリティプラグインの導入:WordfenceやiThemes Securityなどでファイアウォールとスキャンを有効に WordPress本体・プラグインを常に最新に保つ 不要なテーマやプラグインは削除 ログイン試行制限・2段階認証の導入 サーバーのアクセスログ確認で不審な動きを早期発見 まとめ WordPressがスパム攻撃を受けて改ざんされた場合でも、落ち着いて対応すれば復旧は可能です。 パスワード変更 → バックアップ復元 → 再設定という3ステップを踏んで、被害の拡大を防ぎましょう。 日ごろからのバックアップ体制とセキュリティ対策の習慣が、いざという時にサイトを守る最大の武器になります。 この記事がトラブルに遭遇された方の参考になれば幸いです。
-
検索結果に「パンくずリスト」や「ナビゲーションリンク」が表示されているサイトを見たことはありませんか? これは構造化データという仕組みを使って、Googleにサイトの構造を正しく伝えているからです。この記事では、自作テーマでも簡単に導入できる構造化データの設定方法を初心者向けに解説します。 構造化データとは? 構造化データとは、「この部分はナビゲーションです」「これは記事です」といった情報を、Googleなどの検索エンジンに伝えるためのコードです。設定しておくと、検索結果がリッチになり、ユーザーにとってもわかりやすい表示になります。 ナビゲーションメニューに構造化データを設定 まずは、グローバルナビ(メインメニュー)に「これはナビゲーションです」と伝える構造化データを追加します。以下のように<nav>タグに属性を加え、各リンクにitempropを指定します。 コピー <nav itemscope itemtype="https://schema.org/SiteNavigationElement"> <ul> <li><a href="/" itemprop="url"><span itemprop="name">ホーム</span></a></li> <li><a href="/category/html" itemprop="url"><span itemprop="name">HTML</span></a></li> <li><a href="/category/css" itemprop="url"><span itemprop="name">CSS</span></a></li> </ul> </nav> この設定により、モバイル検索でナビゲーションリンクがボタンのように表示されることがあります。 パンくずリストを構造化する 次に、サイト内の階層を示すパンくずリストに構造化データを追加します。Googleがページの位置づけを理解しやすくなります。 コピー <ol itemscope itemtype="https://schema.org/BreadcrumbList"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="/"> <span itemprop="name">ホーム</span> </a> <meta itemprop="position" content="1"> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="/category/css"> <span itemprop="name">CSS</span> </a> <meta itemprop="position" content="2"> </li> </ol> positionを指定することで、Googleに階層の順番まで伝えることができます。 記事ページに構造化データ(Article)を追加 ブログ記事や解説記事にはArticle型の構造化データを設定すると、著者情報や公開日などが検索結果に反映されることがあります。JSON-LD形式で記述します。 コピー <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "構造化データの設定方法を初心者向けに解説", "author": { "@type": "Person", "name": "Yowashi" }, "datePublished": "2025-07-02", "publisher": { "@type": "Organization", "name": "HPBUILD", "logo": { "@type": "ImageObject", "url": "https://www.hpbuild.net/public/img/logo.png" } } } </script> このコードは、記事ページの<head>内に挿入するのがおすすめです。 初心者が気をつけたいポイント 順位が上がるわけではない:構造化データは「検索結果の見た目」に効く技術です 正確に書く:誤った記述があると、逆に無視されたり警告が出ることも Search Consoleで確認:構造化データが認識されているかチェックできます おわりに 構造化データは、サイトの「裏側の設計」をGoogleに正しく伝えるための重要な技術です。難しそうに見えて、実はほんの少しのタグやJSONを書くだけで実装できます。 今後も、WordPress自作テーマでできるSEO対策を紹介していきますので、ぜひブックマークしておいてくださいね。
-
パンくずリストは、今どこにいるのかをユーザーに伝える重要なナビゲーション要素です。 今回は、functions.phpに関数を追加するだけで表示できるパンくずリストを、初心者向けにわかりやすく解説します。 1. functions.phpにパンくず関数を追加しよう テーマフォルダ内の functions.php に以下のコードを追記します。 コピーfunction breadcrumb() { echo '<nav class="breadcrumb"><ul>'; // トップページへのリンク echo '<li><a href="' . home_url() . '">ホーム</a></li>'; // 投稿ページ(single.php)またはカテゴリーページの場合 if (is_category() || is_single()) { // カテゴリー情報を取得 $cat = get_the_category(); // 最初のカテゴリがある場合 if (!empty($cat)) { echo '<li><a href="' . get_category_link($cat[0]->term_id) . '">' . $cat[0]->cat_name . '</a></li>'; } // 投稿ページなら記事タイトルを追加 if (is_single()) { echo '<li>' . get_the_title() . '</li>'; } // 固定ページ(page.php)の場合 } elseif (is_page()) { global $post; // 親ページがある場合、親ページへのリンクを追加 if ($post->post_parent) { $parent_title = get_the_title($post->post_parent); $parent_link = get_permalink($post->post_parent); echo '<li><a href="' . $parent_link . '">' . $parent_title . '</a></li>'; } // 現在のページタイトル echo '<li>' . get_the_title() . '</li>'; // 検索結果ページ } elseif (is_search()) { echo '<li>検索結果: ' . get_search_query() . '</li>'; // 404ページ } elseif (is_404()) { echo '<li>ページが見つかりませんでした</li>'; } echo '</ul></nav>'; } 2. 表示させたい位置に関数を呼び出す パンくずリストを表示したいテンプレート(例:header.php や page.php)に以下のコードを追加します。 コピー<?php if (function_exists('breadcrumb')) breadcrumb(); ?> 3. CSSでデザインを整える(例) パンくずリストにスタイルをつけて見やすくしましょう。 コピー.breadcrumb ul { list-style: none; padding: 0; display: flex; flex-wrap: wrap; font-size: 14px; } .breadcrumb li + li::before { content: ">"; padding: 0 8px; color: #888; } .breadcrumb a { color: #0073aa; text-decoration: none; } .breadcrumb li:last-child { color: #555; } 初心者が気をつけたいポイント ホームリンクは必ず含めるとUXが良くなる is_single()とis_page()の違いを理解して使い分けよう 投稿に複数カテゴリがある場合、最初の1つだけを表示しています おわりに 自作テーマにパンくずリストを組み込めば、ユーザーにもSEOにも優しい構造になります。 プラグイン不要なので、デザインも自由自在。ぜひ取り入れてみてくださいね!
Web制作やHTML/CSSの学習に役立つ情報を初心者向けに発信しています。
プロフィールはこちら