Automattic / Automattic/VIP-Coding-Standards

ProperEscapingFunction: flag printf() usages for placeholders being escaped incorrectly

オープン
#674 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る
Type: Enhancement
主要言語
PHP
スター
261
フォーク
44
平均マージ
19分
マージ済み PR(30日)
1

説明

## Describe the solution you'd like

When `printf()` is used, we should ensure that the content in the placeholders are correctly escaped.

## What code should be reported as a violation?

```php
printf(
'%s',
esc_url( $class ), // Error.
esc_attr( $url ), // Error.
esc_attr( $content ), // Error.
);
```

```php
printf(
'%s',
esc_html__( $class, 'domain' ), // Error.
esc_url( $url ),
esc_attr_x( $content, $context, 'domain' ), // Error.
);
```

## What code should *not* be reported as a violation?

Correct usages of escaping:

```php
printf(
'%s',
esc_attr( $class ),
esc_url( $url ),
esc_html( $content )
);
```

Correct usages of escaping with translation functions:

```php
printf(
'%s',
esc_attr_x( $class, $context, 'domain' ),
esc_url( $url ),
esc_html__( $content, 'domain' )
);
```

## Additional context

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、ProperEscapingFunction ルールと printf() 呼び出しの処理箇所を見つけます。issue にある報告対象と報告対象外の PHP の例を比較し、その後、ルールの既存のテストカバレッジを確認します。誤ってエスケープされたプレースホルダー引数が報告され、示されている正しいエスケープと翻訳関数のケースが受け入れられれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
php
領域
security, tooling
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
42/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。