|
9 | 9 | namespace WordPressVIPMinimum\Sniffs\Security; |
10 | 10 |
|
11 | 11 | use PHP_CodeSniffer\Util\Tokens; |
| 12 | +use PHPCSUtils\Utils\TextStrings; |
12 | 13 | use WordPressVIPMinimum\Sniffs\Sniff; |
13 | 14 |
|
14 | 15 | /** |
@@ -40,14 +41,21 @@ public function register() { |
40 | 41 | * @return void |
41 | 42 | */ |
42 | 43 | public function process_token( $stackPtr ) { |
| 44 | + // Strip any potentially interpolated expressions. |
| 45 | + $only_text = $this->tokens[ $stackPtr ]['content']; |
| 46 | + if ( $this->tokens[ $stackPtr ]['code'] === T_DOUBLE_QUOTED_STRING |
| 47 | + || $this->tokens[ $stackPtr ]['code'] === T_HEREDOC |
| 48 | + ) { |
| 49 | + $only_text = TextStrings::stripEmbeds( $only_text ); |
| 50 | + } |
43 | 51 |
|
44 | | - if ( preg_match( '/autoescape\s+false/', $this->tokens[ $stackPtr ]['content'] ) === 1 ) { |
| 52 | + if ( preg_match( '/autoescape\s+false/', $only_text ) === 1 ) { |
45 | 53 | // Twig autoescape disabled. |
46 | 54 | $message = 'Found Twig autoescape disabling notation.'; |
47 | 55 | $this->phpcsFile->addWarning( $message, $stackPtr, 'AutoescapeFalse' ); |
48 | 56 | } |
49 | 57 |
|
50 | | - if ( preg_match( '/\|\s*raw/', $this->tokens[ $stackPtr ]['content'] ) === 1 ) { |
| 58 | + if ( preg_match( '/\|\s*raw/', $only_text ) === 1 ) { |
51 | 59 | // Twig default unescape filter. |
52 | 60 | $message = 'Found Twig default unescape filter: "|raw".'; |
53 | 61 | $this->phpcsFile->addWarning( $message, $stackPtr, 'RawFound' ); |
|
0 commit comments