コアポイント
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()
、、、
、、、。
この記事は、Sitegroundとのコラボレーションで作成された一連の記事の一部です。 SitePointを可能にしたパートナーをサポートしてくれてありがとう。
WordPressがネットワーク共有の27%を占めることを考えると、セキュリティは、この人気のあるオープンソースプラットフォームでWebサイトを実行している人にとって最大の関心事です。 WordPressコアコードのセキュリティは専用の開発チームによって維持されていますが、これは、WordPressの機能を拡張してほぼすべてのことを行うために、何千ものサードパーティのプラグインとテーマがある場合はそうではありません。脆弱性を備えた1つのプラグインまたはテーマだけが、何百万ものWebサイトに高いリスクをもたらす可能性があります。
信頼できるホスティングを使用しない限り、WordPressプラグインと定期的なセキュリティチェックの自動更新を許可する信頼できるホスティングプロバイダー(パートナーSiteGroundなど)を使用しても、Webサイトのテーマとプラグインのセキュリティは完全にあなた次第ですWordPressプラグインと定期的なセキュリティチェックの自動更新を可能にするプロバイダー(当社のPartner Sitegroundなど)
この記事では、WordPressテーマ開発に適用できるガイドラインとWordPress関数を紹介して、製品が作成されたときにユーザーの安全性を最初に配置できるようにします。強力なセキュリティ意識を持つ開発者のための
原則 専用のWordPressプラグインとテーマ開発者の場合、セキュリティは、コードのすべての行に最初に書いた要因です。 安全なWordPressテーマを書くための全体的なアプローチには、次の一般原則に焦点を当てることが含まれます。に注意すること
注意を払う必要がある最も一般的な脅威は次のとおりです。
データの検証、クリーニング、エスケープ
ソース(ユーザー、ネットワークサービス、APIなど)からの入力データを受け入れる前に、期待を満たし、有効であることを確認する必要があります。このタスクは、
クリーニング
ユーザー、ネットワークサービスなどからのデータのフィルタリングまたはクリーンアップを含む。これらはすぐにデータベースに保存されます。このプロセスでは、JavaScriptステートメント、特殊文字など、害を引き起こす可能性のあるデータからすべてを削除できます。エスケープ
特殊文字の削除、エンコードされたHTML文字など、データの安全な表示を保証することを含む。ここで推奨されるアプローチは、できるだけ遅く脱出することです。つまり、画面にデータが表示される前に逃げることです。WordPressテーマで多くのクリーンアップを行い、脱出する必要があります。実際、セキュリティ上の理由から、最良の方法は、すべての動的なデータ、つまりHTMLソースコードでハードコードされていないデータをクリーン/エスケープすることです。
WordPress検証function
多くの便利なPHP関数を使用して基本的な検証を実行できます。 たとえば、
変数が存在しないか、その値がfalse
に設定されているかどうかを確認するには、を使用できます。
しかし、検証を簡単にするために、WordPressはこれらの有用な機能を提供します。 empty()
例:is_email( $email )
if ( is_email( 'test@domain.com' ) ) { echo '有效的电子邮件地址。'; }
:username_exists( $username )
を提供します
$username = 'testuser'; if ( username_exists( $username ) ): echo "用户名已存在。"; endif;
:term_exists( $term, $taxonomy = '', $parent = null )
を使用できます。
// 检查类别“cats”是否存在 $term = term_exists('cats', 'category'); if ($term !== 0 && $term !== null) { echo "“cats”类别存在。"; }
:validate_file( $file, $allowed_files )
を使用します
$path = 'uploads/2017/05/myfile.php'; // 返回 0(有效路径) return validate_file( $path );
WordPress Cleanup/Escape Function ビルトインWordPress関数を使用してデータをクリーニングおよびエスケープすることは、これを行うための最も速くて安全な方法です。
以下は、WordPressテーマを開発するときによく使用する機能です。
sanitize_email( $email )
$sanitized_email = sanitize_email(' admin@example.com! '); // 将输出:admin@example.com echo $sanitized_email;
sanitize_option( $option, $value )
sanitize_option( 'admin_email', 'admin@test.com!' );
sanitize_text_field( $str )
// 输出:标题 echo sanitize_text_field('<h1>标题</h1>');
WordPressカスタマイザーのコンテキストで機能します。 sanitize_hex_color( $color )
sanitize_hex_color_no_hash( $color )
テーマは、ユーザーがさまざまなWebサイト要素の色を選択できるようにする場合に非常に便利です。
最初の関数は、#シンボルが付けられた16進の色の入力を検証しますが、2番目の関数は#なしでカラーデータを処理します。
WordPress.orgコードリファレンスの例:
$wp_customize->add_setting( 'accent_color', array( 'default' => '#f72525', 'sanitize_callback' => 'sanitize_hex_color', ) );
wp_kses_post( $data )
function yourtheme_sanitize_html( $input ) { return wp_kses_post( force_balance_tags( $input ) ); }
esc_html( $text )
<h2><?php echo esc_html( $title ); ?></h2>
動的出力HTML属性の場合は<
esc_url( $url )
<a href="https://www.php.cn/link/9e52112668804599bae71e241e4b4548'https://website.com' ); ?>">很棒的网站</a>
esc_attr( $text )
<a href="https://www.php.cn/link/1649f854581e9c03bc2c4e06023c5b99'/' ) ); ?>" rel="home"></a>
esc_textarea( $text )
以下の優れたリソースは、WordPressテーマでセキュリティコードを作成するポイントに本当に到達するのに非常に役立ちます:
テーマ開発自体に興味がある場合は、SitePointの「最初のWordPressテーマを構築する」コース:プレーヤーのロード...
結論
セキュリティは、すべてのWordPress開発者のトップでなければなりません。 WordPressは、テーマに挿入できる多数の既製の機能を提供することから、良いスタートを切ることができます。したがって、WordPressを使用して検証およびクリーン/エスケープ機能を使用することは、安全で信頼できるWordPressテーマの作成を開始できる最も簡単な方法です(ユーザーは信頼を学びます)。
WordPressテーマやプラグインを書く際にセキュリティはどれくらいと考えていますか?セキュリティの問題をどのように解決しますか?
下のコメントボックスをクリックして共有してください!
WordPressテーマの検証とエスケープ関数についての
WordPressコーディング基準は何ですか、そしてなぜそれらが重要なのですか?
WordPressコードを安全に編集する方法は?
定性分析におけるコードとトピックの違いは何ですか?
テーマコーディングとは何ですか?また、WordPressでどのように機能しますか?
検証および脱出機能は、WordPressのセキュリティ対策です。検証とは、ユーザーが入力したデータをチェックして、処理前に特定の条件を満たすことを確認するプロセスです。 Escapeは、セキュリティの脆弱性を引き起こす可能性のある有害なデータを削除することにより、出力が安全であることを保証するプロセスです。これらの機能は、SQLインジェクションやクロスサイトスクリプト(XSS)などのセキュリティの問題を防ぐために重要です。
検証および脱出データが非常に重要です。これらのプロセスがなければ、あなたのウェブサイトを攻撃し、攻撃者があなたのウェブサイトに有害なデータを注入することができ、その結果、潜在的なデータ損失またはあなたのウェブサイトへの不正アクセスが得られます。
WordPressは、データを検証および逃げるためのいくつかの関数を提供します。たとえば、sanitize_text_field()
関数を使用してテキスト入力を検証し、esc_html()
関数を使用してHTML出力をエスケープできます。ユーザー入力を処理したり、データをブラウザに出力したりするときは、必ずこれらの機能を使用してください。
安全なWordPressコードを作成するためのいくつかのベストプラクティスには、WordPressコーディング標準に従うこと、すべてのデータの検証と脱出、NONCEを使用してリクエストのソースを検証し、アクションを実行する前にユーザー許可を確認し、WordPress、テーマ、プラグインを維持することが含まれます。日付。
WordPress Developer Manualは、WordPressコーディング標準を学習するための優れたリソースです。標準の詳細な説明と例を提供します。また、WordPressコーディング標準をカバーする多くのオンラインチュートリアルとコースもあります。
以上がワードプレス関数が組み込まれた安全なテーマをコーディングしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。