Why did this come back Not Fixed when the reported payload no longer fires?
The finding came back Not Fixed because while the reported payload was blocked, the underlying vulnerability still reproduces through a different attack vector that the partial fix leaves open.
Here's what happened: the target's fix encodes angle brackets and ampersands to entities, which blocks the original reported payload (<script>alert(1)</script>). But that encoding only address one reflection context. The actual HTML reflects the input inside an attribute value, and the fix left double quotes unencoded.
An attacker can break out of that attribute using a raw quote character, then inject an event handler like " autofocus onfocus=alert(document.domain) x=". That handler fires on page load in the real browser. The finding's evidence captured the JavaScript firing three times out of three in the retest, proving the XSS still executes, just by a route the reporter's original steps didn't follow.
The distinction matters because it shows the developer stopped at blocking one technique without fixing the underlying flaw. Reflected XSS prevention requires encoding all special characters for the context they land in, or using a framework that does it. Encoding only some characters (angle brackets, ampersands) while leaving quotes raw leaves the attribute-injection vector open. That is why the retest landed on Not Fixed rather than Fixed, even though the specific payload from the original report no longer works.






