
● String concatenation or strings building a query directly from user input.
● ORM methods used in ways that bypass builtin parameterization (raw query escapes are
a frequent culprit).
● Stored procedures that reintroduce stringbuilding internally, even when the outer
application code looks safe.
The pattern to internalize: any point where usercontrolled data touches a query string without a
parameter binding is a candidate, regardless of how many layers of abstraction sit on top of it.
CrossSite Scripting (XSS) Review Challenges
XSS review challenges train a different kind of attention tracing where data exits the application
toward a browser, rather than where it enters. Look for:
● Output rendered without contextual encoding (HTML vs. attribute vs. JavaScript context
each need different escaping).
● Framework escape hatches like dangerouslySetInnerHTML or v html used without
sanitization.
● DOMbased sinks, where clientside JavaScript writes untrusted data directly into the
page without ever touching the server.
Because modern frameworks autoescape by default, most realworld cross siteXSS in code
review challenges hides specifically in the places developers explicitly opted out of that
protection which is exactly why those spots are worth learning to scan for first.
CSRF and SSRF: The RequestBased Vulnerability Pair
These two often get confused by newer learners because both involve requests, but they
represent opposite directions of risk:
● CSRF exploits requests sent to your application from an attacker controlled page, relying
on a victim's authenticated session. In code, look for statechanging endpoints (POST,
PUT, DELETE) missing CSRF tokens or samesite cookie enforcement.
● SSRF exploits requests sent from your application to an attacker-influenced destination,
often through a feature like import from URL or a webhook handler. In code, look for
outbound HTTP calls where the destination URL, host, or IP is not validated against an
allowlist.
Reviewing both back to back is a useful drill, since it forces you to think about who initiates the
request and who controls the destination rather than patternmatching on surface similarity
alone.