WordPressプラグインとテーマ開発者のための16のセキュリティのヒント

公開: 2021-10-19

気をつけすぎることはありません!

開発者としての私たちの仕事の大部分は、私たちが構築しているサイトとプラグインが安全であることを確認することです。

企業は、ますます複雑な機能を備えたより高速なソリューションを必要としています。 これは順調な進歩ですが、複雑なプロジェクトを構築するには、適切なセキュリティ設定も必要です。 WordPressのセキュリティは、Webサイト開発の最も重要な側面の1つです。

機能の複雑さが増すにつれて、多くの開発者は基本的なWebサイトおよびWebアプリケーション開発のセキュリティ原則を見逃しています。 その結果、サイバー攻撃やその他のリスクにさらされている欠陥のあるWebサイトが作成されます。

したがって、プロジェクトを構築する際には、いくつかの基本的なWebサイトおよびWebアプリケーション開発のセキュリティプロトコルを実装することが不可欠です。
以下は、サイトを安全で健全な状態に保つのに役立つWeb開発者向けの16のセキュリティのヒントです。

1.保護が必要なデータを把握する

最も重要なWebサイト開発のセキュリティ原則の1つは、必要なデータを保存するだけでよいということです。
プロジェクトを開発するときは、次の3つの質問をする必要があります。

  • 会社はどのようなデータを保存する必要がありますか?
  • 会社はどのような機密データを暗号化する必要がありますか?
  • 何らかの理由でデータが危険にさらされた場合、会社にどの程度の損害を与える可能性がありますか?

保存する機密データが多いほど、漏洩のリスクが高くなります。 機密データを保存する必要がある場合は、アクセスが困難になるように暗号化する必要があります。

2.役割管理とアクセス制御を実装します

Webサイト、プラグイン、またはテーマを設計するときは、ユーザーに可能な限り低い特権を与えることが重要です。

ユーザーが必要なものだけを取得し、他の領域にアクセスできないように、特権を制限する必要があります。

たとえば、寄稿者は、新しい投稿やページを作成できるように制限する必要がありますが、それらを公開することはできません。 編集者は、新しい投稿を作成して公開できる必要がありますが、デザインやプラグインを変更することはできません。

同様に、制限したいプラグインまたはテーマで特定の機能を開発するときは、インストール中に新しいWordPressユーザーロールを作成するようにしてください。 管理者にそれらを認識させて、開発しているプラ​​グインまたはテーマを使用するそれぞれのユーザーに適切な役割が割り当てられるようにします。

これは、構造がどのように見えるかを簡単に図で表したものです。

役割管理とアクセス制御の構造

このアプローチでは、侵入者が与える可能性のあるダメージを制限できるため、問題を最小限に抑えることができます。 また、好奇心旺盛なユーザーがWebサイトの本来あるべきではない領域をいじり回して、エラーやミスによって引き起こされる損害を制限することもできます。

また、開発チームの役割に応じて、開発チーム内のアクセスを制限する必要があります。

3.認証を適用します

Webサイト認証は、ユーザーが自分のIDを確認して、Webサイトの制限された領域にアクセスできるようにするセキュリティプロセスです。

テーマまたはプラグインを開発している間、一部のデータがユーザーに表示されている間、制限する必要がある特定のデータがあります。 したがって、制限されたデータにアクセスするユーザーが認証され、正しいユーザーロールを持っているかどうかを確認するために、コードにチェックを追加することが重要です。

同様に、Webサイトを構築する場合、強力なパスワードの適用や多要素認証などの効果的なアカウント管理手法を実装して、ユーザーデータを保護できます。

二要素認証は、認証を実装する最も一般的な方法の1つです。

二要素認証(2FA)は、Webサイトのパスワードとは別に、サイトにログインするために追加のコードまたはワンタイムパスワード(OTP)が必要な2段階のプロセスです。 このOTPは通常、テキストメッセージ、電話、またはGoogle Authenticator、Authy、DuoSecurityなどの認識された2FAアプリケーションを介して別のデバイスに送信されます。 2FAを実装すると、ブルートフォース攻撃から安全に保護されます。

WordPressでウェブサイトを構築している場合は、ウェブサイトを保護するためのこれらのすばらしいツールを確認してください。

  • ログイン試行の制限:このツールは、ログイン試行の回数を制限することにより、ブルートフォース攻撃からの安全を確保します。 また、スパム対策と自動化された非アクティブなユーザーログアウトも含まれます。
  • WP2 FA:WP2FAプラグインを使用すると、2要素認証をWebサイトに瞬時に追加できます。 また、Google Authenticator、Authy、FreeOTP、DuoSecurityなどの複数の2FAアプリもサポートしています。
  • シールドセキュリティ:このプラグインは、Google認証システムやSMS 2FAなどの2FAアプリをサポートしていませんが、YubiKeyを使用しているユーザーには便利です。
  • WPassword:このプラグインは、WordPress Webサイトに強力なパスワードを適用したり、ログイン試行の失敗が多すぎるユーザーをブロックしたりするのに役立ちます。 WooCommerceやその他のサードパーティプラグインとシームレスに統合されます。

4.テーマまたはプラグインをリリースする前に確認してください

テーマまたはプラグインをリリースする前に、コードに可能な限りエラーがないことを確認する必要があります。 特定のコンポーザーの依存関係を使用して、コードの脆弱性を検出できます。

WordPressWebサイトに推奨される依存関係のいくつかは次のとおりです。

  • Wpthemereview
  • Wpコーディング標準

これらのコーディング標準には、印刷前に常にデータをエスケープする、すべてのリクエストにnonceを使用する、使用する前にリクエストデータをサニタイズする、適切なユーザー権限を提供するなど、コードを保護するための厳格なコーディングルールがあります。

これらのツールは、独自のテーマまたはプラグインを開発している場合に最適です。

WPScanセキュリティスキャナーもチェックする必要があります。 これは、Webサイトに脆弱性がないかチェックする優れたオンラインWebサイトセキュリティスキャナーです。

5.特定のPHP関数を避ける

eval()やunserialize()などの特定のPHP関数は、システムデータを公開し、サーバーデータを公開して、サーバーをシャットダウンしたり、ハッカーからすべてのサーバー情報にアクセスしたりする可能性があります。

可能な限り避けるべきPHP関数を次に示します。

eval() :evalは任意のPHPコードを実行できます。 適切に使用しないと、コードがインジェクション攻撃にさらされる可能性があります。

serialize()またはunserialize():ユーザー指定の入力でserialize()またはunserialize()を使用しないでください。 攻撃者はこれらの機能を悪用できます。 シリアル化された任意のオブジェクトを含む文字列を渡して、任意のコードを実行できます。

md5() :インターネットはmd5()暗号の弱点に関するレビューでいっぱいです1 安全ではないと見なされます。 SHA-2などのより優れたハッシュ関数を使用してください。

sha1() :sha1()は、ハッシュアルゴリズムの高速性のため、使用すべきではないもう1つのハッシュ関数です。 最新のフレームワークでは、md5()の代わりにSHA-2ハッシュアルゴリズムを使用することをお勧めします。

6. lintersを使用して、コード内の問題を見つけます

lintツールは、プログラムおよびスタイルのエラーがないかソースコードをチェックする基本的な静的コードアナライザーです。 リンターの声の出力トーンは、プロジェクトを前進させ続けるために友好的でなければなりません。

Lintコードは、Webサイトまたはアプリの開発中に潜在的な脆弱性を見つけ、エラーを減らすための優れた方法です。 PHP、JS、およびHTML開発に特定のセキュリティリンターを使用できます。

PHPコードの静的分析のためのいくつかの注目すべきツールは次のとおりです。

  • PHP-Parallel-Lint
  • SonarLint
  • 詩篇
  • PHPリント

SonarLintは、HTMLおよびJavascriptのリンティングにも使用できます。

その他の注目すべきJSリンターは次のとおりです。

  • JS Lint
  • ESリント

7.未使用のコードとプラグインを削除します

ソフトウェアがますます複雑になると、コードの脆弱性の可能性も高まります。 WordPressのテーマとプラグインも同じです。 HTML5、CSS、JavaScriptなどのコードの機能が増え続けることで、開発者はリッチWebアプリを構築できます。

ただし、アプリケーションの複雑さが増しているのは両刃の剣です。 これらは、ユーザーが期待する機能を提供するのに役立ちますが、アプリケーションの攻撃対象領域も拡大します。 このような脆弱性に対処するための1つの対策は、使用されていないコードを削除することです。

ユーザーが異なれば、WebサイトまたはWebアプリケーションのすべての機能が必要になるとは限りません。 各展開のユーザー要件に基づいて不要な機能を削除することにより、攻撃対象領域とそれに関連するリスクを減らすことができます。

WordPressでウェブサイトを開発するのが好きな場合は、コードの面で軽量でありながら、ニーズを満たすテーマとプラグインを使用することをお勧めします。 彼らはあなたのウェブサイトを安全に保つだけでなく、検索エンジン最適化にも役立ちます。 利用可能な最高の軽量で最速のWordPressテーマのいくつかを次に示します。

8.サーバー側とクライアント側の検証を使用する

カスタムコードを書くのが好きな人は、クライアント側とサーバー側の両方の検証を使用することが不可欠です。 クライアント側の検証は、ユーザーがデータを誤って入力したり、フィールドを忘れたりするなどの一般的な間違いを犯さないようにするのに役立ちます。 このような検証は、サーバーに到達する前に無効なデータをキャッチし、時間と費用を節約します。

サーバーへのラウンドトリップが失敗した後にのみクライアント側の検証が行われる場合、ユーザーが間違いをすぐに修正することを許可せずに、ユーザーに何が間違っていたかを伝えるのに遅延が発生することを想像してみてください。

ただし、セキュリティ対策としては、クライアント側の検証だけでは不十分です。 また、サーバー側の検証を使用する必要があります。 サーバー側の検証は、悪意のある入力やその他の攻撃ベクトルからユーザーを保護します。

9.ユーザー入力と要求データをサニタイズします

ユーザー入力サニタイズは、システムへの有害なコードの挿入を防ぐために、ユーザーからのデータと、許可されていない、または不要な文字や文字列のAPIを監査、クリーニング、フィルタリングするサイバーセキュリティ対策です。

ハッカーは特定のコマンドを挿入し、Webサイトのセキュリティを危険にさらす可能性のあるアクションを実行する可能性があります。 入力のサニタイズは、データの整合性を維持し、システムのセキュリティを向上させるのに役立ちます。

10.永続的な修正を適用します

セキュリティチェックの実行中に、時々再発し続けるいくつかの脆弱性に気付く場合があります。 部分的なパッチを追加する代わりにそれらを永久に根絶できるように、新しい脆弱性の根本的な原因を特定する必要があります。

たとえば、開発するテーマまたはプラグインでSQL / XSSの問題が発生することがよくあります。 このような場合、入力ごとにサニタイズチェックを作成する代わりに、関数/クラスを作成し、ユーザー入力がある場合は常にすべてのデータをこのクラス/関数に渡すようにポリシーを設定します。

11.セキュリティの設定ミスとデフォルトを回避する

セキュリティ設定が定義および実装されておらず、デフォルト値が維持されている場合、セキュリティの設定ミスが発生します。 セキュリティ制御を実装しなかったり、エラーで実装しなかったりすると、作成するテーマ、プラグイン、またはWebサイトに脆弱性が存在する可能性が高くなります。

システム、データベース管理者、または開発者がアプリケーションのフレームワークを正しく構成しなかったために、構成ミスが頻繁に発生し、ハッカーにとって危険なオープンパスウェイが発生します。

デフォルトの設定が安全であり、パスワードを自動的に設定しないことを確認してください(必要な場合)。 たとえば、プラグインがユーザーがファイルをアップロードできるディレクトリを使用している場合は、常にユーザーにパスワードとディレクトリパスを設定するように依頼してください。

12.常に最新情報を入手してください

サイバーセキュリティは進化し続ける分野です。 開発に遅れずについていき、コードへの新たな脅威を軽減できるように、最新のセキュリティ更新と新たなリスクを認識する必要があります。

開発者は、ニュースを常に把握し、より安全なコードを作成するのに役立ちます。コーディングを保護し、コードをより適切にサニタイズし、ユーザー入力をより適切に処理するためのベストプラクティスは何ですか。

これを行うには、オンラインで専門家をフォローし、お気に入りのWeb開発ブログで最新情報を入手してください。 あなたはすでにこれを読んでいます。 ですから、良いスタートを切ることができます。

WordPressセキュリティに関する最高のリソースのいくつかを次に示します。

  • WPホワイトセキュリティブログ
  • WordFenceブログ
  • スクリブログ

13.コードを維持します

今日書いたコードは明日は安全ではないかもしれません。 新しい脆弱性の亜種が次々と登場しており、開発者側からも絶えずアップグレードする必要があります。

プラグインまたはテーマに新しい機能を追加するときは、それが他のモジュールやクラス、またはコード内の関数のセキュリティに影響を与えないことを確認してください。 その場合は、問題を修正するためにコードを更新する必要があります。

GitHubなどのツールを使用して、テーマやプラグインのコードを維持することもできます。 コードを追跡し、問題をより迅速に修正するのに役立ちます。 セキュリティは常に進化しています。 最新のトレンドに対応するには、セキュリティテストを絶えず更新して、脆弱性を見つけて改善できるようにすることが不可欠です。

14.ソフトウェアパッケージを定期的に更新します

簡単です。

PHP、Javascript、HTMLなどのソフトウェアパッケージを最新の状態に保つことは、新しいセキュリティ問題に対処するのに役立ちます。 ソフトウェアのセキュリティを向上させることは常に継続的な懸念事項であり、そのために、私たちは常にそのようなソフトウェアの最新バージョンを最新の状態に保ちます。

15.チームとのコラボレーション

サポートチームに提出されたセキュリティチケットに注意してください。 クライアントがセキュリティの問題を報告した場合は、それらに対処することを優先します。 あなたのエンドユーザーはあなたの仕事について最高のフィードバックを与えるので、それをうまく使ってください!

セキュリティの問題について開発チームと話し合い、開発したパッチでセキュリティの問題が修正され、公開する前に他の問題が発生しないことを確認します。 チームメイトと頻繁にコラボレーションする必要がある場合、または部門全体がサポートに関与している大規模なクライアントと連携する必要がある場合は、ウェビナーソフトウェアを使用してプロセスを容易にすることをお勧めします。

16.最悪のシナリオに備える

注意しすぎることはできません。 WebおよびWebで公開されているものは、100%安全になることはありません。 ただし、リスクを軽減するのに役立つ手順を実行できます。

重要なのは、潜在的な脆弱性を評価し、適切なセキュリティ対策を講じて適切なリスク対応を開発することです。 新しい攻撃手法が頻繁に出現するため、このプロセスの一環としてベストプラクティスも進化させる必要があります。

たとえば、WordPress Webサイトがハッキングされた場合、緊急時対応計画には、ハッキングの場合の対処方法を含める必要があります。 これには、バックアップ方法、クリーンアッププロセス、およびWebサイトの再構築とサービスの復元に必要な手順が含まれている必要があります。

このような計画により、すべての利害関係者は、情報過多に圧倒されたり、不要なアクションに過剰に反応したりすることなく、迅速に問題を修正できます。

最終的な考え

テーマまたはプラグインのセキュリティを向上させるために他に何ができますか? まあ、たくさんのこと。 ほら、安全なコードを書くことは一度きりのことではありません。 テクノロジーは進化し、攻撃方法もそれに伴って進化します。

現実には、すべてのサイバー攻撃を防止したり、考えられるすべてのリスクを軽減したりすることはできません。 あなたの目的は、あなたが持っているものでできる限り多くのことをし、それを改善するためにあなたのコードを絶えず再訪することであるべきです。

Webサイトに対して明確に定義されたセキュリティ計画を作成し、最悪の事態に直面する準備をします。 必ずセキュリティ関連のチケットやレポートを最優先してください。

すべてのユーザーが更新してWebサイトが危険にさらされるのを防ぐことができるように、セキュリティ修正プログラムをリリースしたことを示すブログ投稿またはアナウンスをコミュニティ内に公開します。

サイバーセキュリティは軍事戦略と大差ありません。 重要なのは準備です! うまくいけば、この投稿があなたの準備に役立つことを願っています。 コメントで、ウェブサイトのセキュリティを向上させるためにどのような対策を講じているかをお知らせください。

この記事で使用されている参照[ + ]

この記事で使用されている参照
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C