Skip to content

Commit a2ab688

Browse files
committed
ProperEscapingFunction: further improve attribute matching
Prior to VIPCS 2.3.0, equal signs not followed by quotes were ignored by this sniff, even though unquoted values for attributes in HTML is supported as long as the value does not contain whitespace. However, detecting equal signs not followed by quotes could confuse the attribute detecting as equal signs without quotes can also be used outside of HTML attribute context. This improves the attribute detection further by making sure that an equal sign (with or without subsequent quotes) is preceded by at least one alphanumeric character to indicate it _could_ be an HTML attribute. Includes tests. Fixes 680
1 parent 7666bf2 commit a2ab688

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

WordPressVIPMinimum/Sniffs/Security/ProperEscapingFunctionSniff.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class ProperEscapingFunctionSniff extends Sniff {
2323
*
2424
* @var string
2525
*/
26-
const ATTR_END_REGEX = '`(?<attrname>href|src|url|(^|\s+)action)?=(?:\\\\)?["\']*$`i';
26+
const ATTR_END_REGEX = '`(?<attrname>href|src|url|(^|\s+)action)?(?<=[a-z0-9_-])=(?:\\\\)?["\']*$`i';
2727

2828
/**
2929
* List of escaping functions which are being tested.

WordPressVIPMinimum/Tests/Security/ProperEscapingFunctionUnitTest.inc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,10 @@ echo '<a href="', esc_html($url), '">'; // Error.
106106
<div>html</div>
107107
<?= '<h1 class="', esc_attr( $test ), '">'; ?><!-- OK -->
108108
<div>html</div>
109+
110+
// Issue #680 - only match = when preceeded by something which could be an HTML attribute.
111+
<option value="<?php echo esc_attr( $i ); ?>" <?php echo ( $filter_importance === $i ) ? 'selected' : ''; ?> >
112+
&gt;=<?php echo esc_html( $i ); ?>
113+
</option>
114+
115+
<A HREF="<?= esc_url($url) ?>" data-num2=<?= esc_attr( $num2 )><?php echo esc_html( $link ); ?><a/>

0 commit comments

Comments
 (0)