<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>James Lee | Security Notes</title><link>https://jameslee177.github.io/</link><description>Recent content on James Lee | Security Notes</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 30 Oct 2026 16:00:00 +0800</lastBuildDate><atom:link href="https://jameslee177.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Part 2: The Limits of System Prompt Defenses — Do We Still Need an AI Firewall?</title><link>https://jameslee177.github.io/posts/prompt-injection-part-2/</link><pubDate>Fri, 30 Oct 2026 16:00:00 +0800</pubDate><guid>https://jameslee177.github.io/posts/prompt-injection-part-2/</guid><description>A well-written system prompt can stop simple attacks, but it is not a security boundary.</description></item><item><title>Part 1: How LLM Apps Are Guided — Chain-of-Thought and System Prompts</title><link>https://jameslee177.github.io/posts/prompt-injection-part-1/</link><pubDate>Fri, 30 Oct 2026 00:00:00 +0000</pubDate><guid>https://jameslee177.github.io/posts/prompt-injection-part-1/</guid><description>Before we can break an AI application, we need to understand the controls that shape its behavior.</description></item><item><title>About</title><link>https://jameslee177.github.io/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jameslee177.github.io/about/</guid><description>&lt;p&gt;Hi, I&amp;rsquo;m &lt;strong&gt;James Lee&lt;/strong&gt; — a security engineer based in Singapore with more than 20 years of experience in cybersecurity.&lt;/p&gt;
&lt;p&gt;Over the years, I&amp;rsquo;ve worked across a wide range of security domains, from network and access security to application protection. Today, much of my focus is on securing AI applications and infrastructure, while still working hands-on with the security technologies that surround them.&lt;/p&gt;
&lt;h2 id="what-i-work-on"&gt;What I work on&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI Security&lt;/strong&gt;: prompt injection, jailbreaks, guardrails, AI runtime firewalls, and agent/MCP security&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application Security&lt;/strong&gt;: WAF, API security, and bot defense&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identity &amp;amp; Access&lt;/strong&gt;: OAuth 2.0, OpenID Connect (OIDC), and SAML-based authentication and federation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network &amp;amp; Secure Access&lt;/strong&gt;: Secure Web Gateways (SWG) and VPN&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Threat Defense&lt;/strong&gt;: malware based attacks detection and protection&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-i-write-about"&gt;What I write about&lt;/h2&gt;
&lt;p&gt;Most posts here focus on AI security, but I also write about application security and the broader cybersecurity topics above. Many of them come from experiments in my own lab: I like to break things first, then work out how to defend them.&lt;/p&gt;</description></item></channel></rss>