ホームページ >CMS チュートリアル >&#&プレス >ワードプレス関数が組み込まれた安全なテーマをコーディングします

ワードプレス関数が組み込まれた安全なテーマをコーディングします

Jennifer Aniston
Jennifer Anistonオリジナル
2025-02-10 11:53:09160ブラウズ

Coding Safe Themes with Built-In WordPress Functions

コアポイント

  • WordPress開発者は、すべてのデータを安全にしている場合は、可能な限りWordPress関数を使用する必要があります。
  • SQLインジェクション、クロスサイトスクリプト(XSS)、およびクロスサイトリクエスト偽造(CSRF)は、開発者がWordPressテーマを書くときに注意を払う必要がある一般的な脅威です。
  • WordPressテーマのセキュリティにとって、
  • 検証、クリーニング、および脱出が重要です。入力データがフィルターをクリーンアップするか、データを保存する前に、データを保存することを確認します。
  • WordPressは、多くの組み込みの検証、クリーニング、エスケープ機能を提供します。これらの関数には、is_email()username_exists()term_exists()validate_file()sanitize_email()sanitize_option()sanitize_text_field()sanitize_hex_color()wp_kses_post()esc_html()esc_url()esc_attr()esc_textarea()

Coding Safe Themes with Built-In WordPress Functions

この記事は、Sitegroundとのコラボレーションで作成された一連の記事の一部です。 SitePointを可能にしたパートナーをサポートしてくれてありがとう。

WordPressがネットワーク共有の27%を占めることを考えると、セキュリティは、この人気のあるオープンソースプラットフォームでWebサイトを実行している人にとって最大の関心事です。 WordPressコアコードのセキュリティは専用の開発チームによって維持されていますが、これは、WordPressの機能を拡張してほぼすべてのことを行うために、何千ものサードパーティのプラグインとテーマがある場合はそうではありません。脆弱性を備えた1つのプラグインまたはテーマだけが、何百万ものWebサイトに高いリスクをもたらす可能性があります。

信頼できるホスティングを使用しない限り、WordPressプラグインと定期的なセキュリティチェックの自動更新を許可する信頼できるホスティングプロバイダー(パートナーSiteGroundなど)を使用しても、Webサイトのテーマとプラグインのセキュリティは完全にあなた次第ですWordPressプラグインと定期的なセキュリティチェックの自動更新を可能にするプロバイダー(当社のPartner Sitegroundなど)

この記事では、WordPressテーマ開発に適用できるガイドラインとWordPress関数を紹介して、製品が作成されたときにユーザーの安全性を最初に配置できるようにします。

強力なセキュリティ意識を持つ開発者のための

原則 専用のWordPressプラグインとテーマ開発者の場合、セキュリティは、コードのすべての行に最初に書いた要因です。 安全なWordPressテーマを書くための全体的なアプローチには、次の一般原則に焦点を当てることが含まれます。
  • 安全であることが証明されるまで、すべてのデータを安全でないと扱います。
  • 可能な限りWordPress関数を使用します。ほとんどのWordPress APIには組み込みのセキュリティメカニズムがあります。つまり、それらを使用すると、コードの脆弱性のリスクを大幅に減らすことができます。
  • 最新のテクノロジーとベストプラクティスを使用して、コードを最新の状態に保ちます。

に注意すること

注意を払う必要がある最も一般的な脅威は次のとおりです。

    SQLインジェクション:攻撃者が悪意のあるSQLコードを注入して、Webサイトのデータベースサーバーを制御します。
  • Cross-Site Scripting(XSS):攻撃者は、悪意のあるJavaScriptコードをWebページに注入します。
  • クロスサイトリクエスト偽造(CSRF):攻撃者は、ユーザーに認証されたWebサイトで不要なアクションを実行するように強制します。
サイバーセキュリティが発展しているため、最新の脅威に注意することが重要です。 WordPressに関しては、Sucuriのブログは脆弱性と攻撃を理解するのに最適な場所です。

データの検証、クリーニング、エスケープ

ソース(ユーザー、ネットワークサービス、APIなど)からの入力データを受け入れる前に、期待を満たし、有効であることを確認する必要があります。このタスクは、と呼ばれます。 たとえば、ウェブサイト上のフォームを介してユーザーから電子メールを収集する場合、ユーザーがテキスト入力を入力したかどうか(たとえば、いくつかの数字または何もない)かどうかを確認する必要があり、その入力は有効に対応する必要があります。 1つの電子メールアドレスを作成し、データベースにデータを入力します。 この種のチェックは、このテーマではほとんど不要だと思うかもしれません。実際、テーマの代わりにプラグインを使用してフォームを含める方が良いでしょう。ただし、これはまさにそうではありません。たとえば、カスタマイザーを介してトピックオプションを追加する予定がある場合は、ユーザーの入力でデータ検証を実行する必要がある場合があります。

クリーニング

ユーザー、ネットワークサービスなどからのデータのフィルタリングまたはクリーンアップを含む。これらはすぐにデータベースに保存されます。このプロセスでは、JavaScriptステートメント、特殊文字など、害を引き起こす可能性のあるデータからすべてを削除できます。

エスケープ

特殊文字の削除、エンコードされたHTML文字など、データの安全な表示を保証することを含む。ここで推奨されるアプローチは、できるだけ遅く脱出することです。つまり、画面にデータが表示される前に逃げることです。

WordPressテーマで多くのクリーンアップを行い、脱出する必要があります。実際、セキュリティ上の理由から、最良の方法は、すべての動的なデータ、つまりHTMLソースコードでハードコードされていないデータをクリーン/エスケープすることです。

WordPress検証function

多くの便利なPHP関数を使用して基本的な検証を実行できます。 たとえば、

変数が存在しないか、その値が

false

に設定されているかどうかを確認するには、

を使用できます。 しかし、検証を簡単にするために、WordPressはこれらの有用な機能を提供します。 empty()

    関数を使用して、データが有効な電子メールアドレスであるかどうかを確認できます。
  • 例:is_email( $email )

    <code class="language-php"> if ( is_email( 'test@domain.com' ) ) {
       echo '有效的电子邮件地址。';
     }</code>
  • 有効なユーザー名を確認するには、WordPressが

    username_exists( $username )を提供します

    <code class="language-php"> $username = 'testuser';
     if ( username_exists( $username ) ):
       echo "用户名已存在。";
     endif;</code>
  • タグ、カテゴリ、またはその他の分類学的用語が存在することを確認するには、

    term_exists( $term, $taxonomy = '', $parent = null )を使用できます。

    <code class="language-php"> // 检查类别“cats”是否存在
     $term = term_exists('cats', 'category');
     if ($term !== 0 && $term !== null) {
       echo "“cats”类别存在。";
     }</code>
  • ファイルパスが有効であることを確認するには(存在する場合はそうではありません)、

    validate_file( $file, $allowed_files )を使用します

    <code class="language-php"> $path = 'uploads/2017/05/myfile.php';
     // 返回 0(有效路径)
     return validate_file( $path );</code>

WordPress Cleanup/Escape Function ビルトインWordPress関数を使用してデータをクリーニングおよびエスケープすることは、これを行うための最も速くて安全な方法です。

以下は、WordPressテーマを開発するときによく使用する機能です。

  • 有効な電子メールアドレスで許可されていないすべての文字を削除します。これは、コーデックスエントリの例です:

    sanitize_email( $email )

    <code class="language-php"> $sanitized_email = sanitize_email(' admin@example.com!  ');
     // 将输出:admin@example.com
     echo $sanitized_email;</code>
  • カスタマイザー入力からの値など、オプションの性質に応じてオプション値をクリーンアップします。例は次のとおりです。

    sanitize_option( $option, $value )

    <code class="language-php"> sanitize_option( 'admin_email', 'admin@test.com!' );</code>
  • ユーザーまたはデータベースが提供する文字列をクリーンアップしますが、それを使用して、単なるテキストにしたいデータをクリーンアップできます:

    sanitize_text_field( $str )

    <code class="language-php"> // 输出:标题
     echo sanitize_text_field('<h1>标题</h1>');</code>
  • および

    WordPressカスタマイザーのコンテキストで機能します。 sanitize_hex_color( $color ) sanitize_hex_color_no_hash( $color )テーマは、ユーザーがさまざまなWebサイト要素の色を選択できるようにする場合に非常に便利です。

    最初の関数は、#シンボルが付けられた16進の色の入力を検証しますが、2番目の関数は#なしでカラーデータを処理します。

    WordPress.orgコードリファレンスの例:

    <code class="language-php"> $wp_customize->add_setting( 'accent_color', array(
       'default' => '#f72525',
       'sanitize_callback' => 'sanitize_hex_color',
     ) );</code>
  • フィルターコンテンツ、許可されたHTMLタグのみが残ります。カスタマイザーのコンテキストでは、これはユーザーがHTML形式でテキストを入力できる場合に非常に便利です。
  • wp_kses_post( $data )

    <code class="language-php"> function yourtheme_sanitize_html( $input ) {
       return wp_kses_post( force_balance_tags( $input ) );
     }</code>
    は、HTMLブロックを逃れる簡単な方法です。たとえば、HTMLタグ内にテキストを出力して、このテキスト自体にHTMLタグやその他の無効な文字が含まれていないことを確認する場合は、次のように書くことができます。
  • esc_html( $text )

    は、HREFおよびSRCプロパティのURLを含むURLをチェックおよびクリーニングする場合に役立ちます。たとえば、
    <code class="language-php"> <h2><?php echo esc_html( $title ); ?></h2></code>
  • 動的出力HTML属性の場合はesc_url( $url )

    <code class="language-php"> <a href="https://www.php.cn/link/9e52112668804599bae71e241e4b4548'https://website.com'%20);%20?>">很棒的网站</a></code>
  • を使用して、ユーザーがテキスト領域で入力したテキストを逃れることができます。

    esc_attr( $text )

    <code class="language-php"> <a href="https://www.php.cn/link/1649f854581e9c03bc2c4e06023c5b99'/'%20)%20);%20?>" rel="home"></a></code>
  • リソース
  • esc_textarea( $text )以下の優れたリソースは、WordPressテーマでセキュリティコードを作成するポイントに本当に到達するのに非常に役立ちます:

      WordPress.orgテーママニュアルのテーマセキュリティ
    • テーマセキュリティ
    • 安全なライティングトピックガイド、フランククライン
    • WordPress、Narayan Prustyのデータを清掃、脱出、検証します
    • WordPressテーマ:XSSの脆弱性と安全なコーディングプラクティス、Tony Perez
    • WordPressのセキュアプラグインとテーマの作成、Ben Lobaugh。
    または、ホスティングプロバイダーがWordPressセキュリティをどのように役立つかを学ぶことができます。

    テーマ開発自体に興味がある場合は、SitePointの「最初のWordPressテーマを構築する」コース:プレーヤーのロード...

    結論

    セキュリティは、すべてのWordPress開発者のトップでなければなりません。 WordPressは、テーマに挿入できる多数の既製の機能を提供することから、良いスタートを切ることができます。

    したがって、WordPressを使用して検証およびクリーン/エスケープ機能を使用することは、安全で信頼できるWordPressテーマの作成を開始できる最も簡単な方法です(ユーザーは信頼を学びます)。

    WordPressテーマやプラグインを書く際にセキュリティはどれくらいと考えていますか?セキュリティの問題をどのように解決しますか?

    下のコメントボックスをクリックして共有してください!

    WordPressテーマの検証とエスケープ関数についての FAQ

    WordPressコーディング基準は何ですか、そしてなぜそれらが重要なのですか?

    WordPressコーディング標準は、WordPressコードの一貫性と品質を確保するために、WordPressによって策定された特定のルールとガイドラインのセットです。これらの標準は、コードが読み取り、理解、維持を容易にするため、重要です。また、一般的なエンコードエラーやセキュリティの脆弱性を防ぐのにも役立ちます。開発者にとって、これらの標準に従うことは、テーマとプラグインがWordPressやその他のテーマとプラグインと互換性があることを確認するために不可欠です。

    WordPressコードを安全に編集する方法は?

    WordPressコードの編集は、適切に行われない場合は危険です。テーマコードを変更するときにサブトピックを使用することをお勧めします。これにより、元のテーマに影響を与えることなく変更を加えることができます。また、変更を加える前に、必ずWebサイトをバックアップしてください。 WordPressエディターの代わりに適切なコードエディターを使用して、コードを編集します。最後に、ライブサイトに適用する前に、ステージングサイトで変更をテストします。

    定性分析におけるコードとトピックの違いは何ですか?

    定性分析では、コードはデータのラベル付け、コンパイル、整理に使用されますが、トピックはデータのパターンと関係を識別するために使用されます。コードは通常、特定のデータを表す単語またはフレーズです。一方、トピックはより広範であり、エンコードされたデータから生じるより大きな概念またはアイデアを表しています。

    テーマコーディングとは何ですか?また、WordPressでどのように機能しますか?

    テーマコーディングは、データのパターンまたはトピックを識別および分析するための定性的研究で使用される方法です。 WordPressでは、テーマコーディングは、特定のデザインまたは機能を備えたテーマを開発するプロセスを参照できます。これには、トピックの意図したデザインまたは機能を反映する方法でコードを作成および整理することが含まれます。

    WordPressの検証および脱出機能は何ですか?

    検証および脱出機能は、WordPressのセキュリティ対策です。検証とは、ユーザーが入力したデータをチェックして、処理前に特定の条件を満たすことを確認するプロセスです。 Escapeは、セキュリティの脆弱性を引き起こす可能性のある有害なデータを削除することにより、出力が安全であることを保証するプロセスです。これらの機能は、SQLインジェクションやクロスサイトスクリプト(XSS)などのセキュリティの問題を防ぐために重要です。

    WordPressでデータを検証してエスケープすることが重要なのはなぜですか?

    WordPressのWebサイトを安全に保つためには、

    検証および脱出データが非常に重要です。これらのプロセスがなければ、あなたのウェブサイトを攻撃し、攻撃者があなたのウェブサイトに有害なデータを注入することができ、その結果、潜在的なデータ損失またはあなたのウェブサイトへの不正アクセスが得られます。

    WordPressでデータを検証して脱出する方法は?

    WordPressは、データを検証および逃げるためのいくつかの関数を提供します。たとえば、sanitize_text_field()関数を使用してテキスト入力を検証し、esc_html()関数を使用してHTML出力をエスケープできます。ユーザー入力を処理したり、データをブラウザに出力したりするときは、必ずこれらの機能を使用してください。

    安全なWordPressコードを書くためのベストプラクティスは何ですか?

    安全なWordPressコードを作成するためのいくつかのベストプラクティスには、WordPressコーディング標準に従うこと、すべてのデータの検証と脱出、NONCEを使用してリクエストのソースを検証し、アクションを実行する前にユーザー許可を確認し、WordPress、テーマ、プラグインを維持することが含まれます。日付。

    WordPressコーディング標準の詳細についてはどうすればよいですか?

    WordPress Developer Manualは、WordPressコーディング標準を学習するための優れたリソースです。標準の詳細な説明と例を提供します。また、WordPressコーディング標準をカバーする多くのオンラインチュートリアルとコースもあります。

    WordPressをエンコードするときに避けるべき一般的な間違いは何ですか?

    WordPressをエンコードするときに避けるべきいくつかの一般的な間違いは、WordPressエンコード標準に従わないこと、データの検証または脱出、ハードコード化されたURL、フォームの提出にNonCEを使用せず、WordPress、テーマ、プラグインを使用しないことを含めます。 。

以上がワードプレス関数が組み込まれた安全なテーマをコーディングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。