<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Abin Antony Security — Blog</title>
  <link>https://cs.abinantony.io/blog</link>
  <description>Articles on mobile, web, API and cloud security from Abin Antony.</description>
  <language>en-IN</language>
  <lastBuildDate>Wed, 19 Aug 2026 00:00:00 +0530</lastBuildDate>
  <atom:link href="https://cs.abinantony.io/feed.xml" rel="self" type="application/rss+xml"/>
  <item>
    <title>What the DPDP Act actually asks of a small product team</title>
    <link>https://cs.abinantony.io/blog/dpdp-act-for-product-teams</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/dpdp-act-for-product-teams</guid>
    <pubDate>Tue, 11 Aug 2026 00:00:00 +0530</pubDate>
    <category>Compliance</category>
    <description>The Act is short, and most of what it asks a product team for is engineering work you can do in a sprint: know what you hold, prove consent, delete on request, notice a breach.</description>
  </item>
  <item>
    <title>The mobile app security checklist I run before every release</title>
    <link>https://cs.abinantony.io/blog/mobile-app-security-checklist</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/mobile-app-security-checklist</guid>
    <pubDate>Tue, 28 Jul 2026 00:00:00 +0530</pubDate>
    <category>Mobile security</category>
    <description>Twenty checks, grouped the way an attacker looks at an app: what ships inside the package, what lands on the device, what crosses the network, and what the server accepts.</description>
  </item>
  <item>
    <title>OWASP Mobile Top 10, translated for Flutter teams</title>
    <link>https://cs.abinantony.io/blog/owasp-mobile-top-10-for-flutter-teams</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/owasp-mobile-top-10-for-flutter-teams</guid>
    <pubDate>Tue, 14 Jul 2026 00:00:00 +0530</pubDate>
    <category>Mobile security</category>
    <description>The Top 10 is written platform-agnostically. Here is what each risk looks like in a real Flutter project, and which package choice usually causes it.</description>
  </item>
  <item>
    <title>Five API mistakes I find in almost every assessment</title>
    <link>https://cs.abinantony.io/blog/api-security-mistakes</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/api-security-mistakes</guid>
    <pubDate>Tue, 30 Jun 2026 00:00:00 +0530</pubDate>
    <category>API security</category>
    <description>Five findings appear so consistently that I now test for them in the first hour of any API engagement. Each has a one-paragraph fix.</description>
  </item>
  <item>
    <title>What Indian startups should actually budget for security</title>
    <link>https://cs.abinantony.io/blog/security-budget-for-indian-startups</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/security-budget-for-indian-startups</guid>
    <pubDate>Fri, 12 Jun 2026 00:00:00 +0530</pubDate>
    <category>Practice</category>
    <description>Security spend fails when it arrives in the wrong order. Here is what buys the most risk reduction at each funding stage, with indicative rupee figures.</description>
  </item>
  <item>
    <title>Certificate pinning without bricking your app</title>
    <link>https://cs.abinantony.io/blog/certificate-pinning-without-breaking-your-app</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/certificate-pinning-without-breaking-your-app</guid>
    <pubDate>Tue, 26 May 2026 00:00:00 +0530</pubDate>
    <category>Mobile security</category>
    <description>Pinning fails in one of two ways: not implemented, or implemented so tightly that a routine certificate renewal takes the app offline for everyone who has not updated.</description>
  </item>
  <item>
    <title>Broken access control: the bug class that outlives every framework</title>
    <link>https://cs.abinantony.io/blog/broken-access-control</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/broken-access-control</guid>
    <pubDate>Fri, 08 May 2026 00:00:00 +0530</pubDate>
    <category>Web security</category>
    <description>Frameworks solved authentication a decade ago. Authorisation is still hand-written per endpoint, which is why the same finding leads report after report.</description>
  </item>
  <item>
    <title>JWTs are not sessions: token handling mistakes in mobile backends</title>
    <link>https://cs.abinantony.io/blog/jwt-mistakes-in-mobile-backends</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/jwt-mistakes-in-mobile-backends</guid>
    <pubDate>Fri, 17 Apr 2026 00:00:00 +0530</pubDate>
    <category>API security</category>
    <description>A JWT is a signed claim, not a session. Treating it as one produces tokens nobody can revoke and a logout button that logs nobody out.</description>
  </item>
  <item>
    <title>The IAM blast radius review, step by step</title>
    <link>https://cs.abinantony.io/blog/iam-blast-radius-review</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/iam-blast-radius-review</guid>
    <pubDate>Tue, 24 Mar 2026 00:00:00 +0530</pubDate>
    <category>Cloud security</category>
    <description>A compliance score tells you which policies are untidy. A blast radius review tells you what happens when one CI key leaks — which is the question you actually need answered.</description>
  </item>
  <item>
    <title>How to answer an enterprise security questionnaire without lying</title>
    <link>https://cs.abinantony.io/blog/answering-a-security-questionnaire</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/answering-a-security-questionnaire</guid>
    <pubDate>Fri, 27 Feb 2026 00:00:00 +0530</pubDate>
    <category>Compliance</category>
    <description>The instinct is to answer yes to everything and hope nobody checks. Reviewers check, and a caught overclaim costs more than every honest no combined.</description>
  </item>
  <item>
    <title>Secrets in git history: finding them before someone else does</title>
    <link>https://cs.abinantony.io/blog/secrets-in-git-history</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/secrets-in-git-history</guid>
    <pubDate>Fri, 30 Jan 2026 00:00:00 +0530</pubDate>
    <category>Secure coding</category>
    <description>Deleting a key in a later commit does not remove it. The only response that counts is rotation, and the only prevention that works runs before the commit lands.</description>
  </item>
  <item>
    <title>The logs you will wish you had after an incident</title>
    <link>https://cs.abinantony.io/blog/logs-you-will-want-after-an-incident</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/logs-you-will-want-after-an-incident</guid>
    <pubDate>Thu, 08 Jan 2026 00:00:00 +0530</pubDate>
    <category>Cloud security</category>
    <description>During an incident you cannot add logging retroactively. Every question you will be asked depends on events you either recorded beforehand or did not.</description>
  </item>
  <item>
    <title>Threat modelling a payments flow in ninety minutes</title>
    <link>https://cs.abinantony.io/blog/threat-modelling-a-payments-flow</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/threat-modelling-a-payments-flow</guid>
    <pubDate>Mon, 15 Dec 2025 00:00:00 +0530</pubDate>
    <category>Practice</category>
    <description>Threat modelling gets skipped because it sounds like a two-day workshop. Here is the ninety-minute version, run on the flow that carries your money.</description>
  </item>
  <item>
    <title>Rate limiting that actually stops OTP abuse</title>
    <link>https://cs.abinantony.io/blog/rate-limiting-otp-abuse</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/rate-limiting-otp-abuse</guid>
    <pubDate>Thu, 20 Nov 2025 00:00:00 +0530</pubDate>
    <category>API security</category>
    <description>A four-digit OTP with a per-IP limit is not protected. It is protected against one attacker on one connection, which is not the attacker you have.</description>
  </item>
  <item>
    <title>What a scanner cannot tell you about your Android app</title>
    <link>https://cs.abinantony.io/blog/what-a-scanner-misses-in-android-apps</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/what-a-scanner-misses-in-android-apps</guid>
    <pubDate>Tue, 28 Oct 2025 00:00:00 +0530</pubDate>
    <category>Mobile security</category>
    <description>A mobile scanner report reads alarmingly and usually contains nothing severe. Everything severe requires a second account, a device and a person.</description>
  </item>
  <item>
    <title>Pentest or code review, when you can only afford one</title>
    <link>https://cs.abinantony.io/blog/pentest-or-code-review</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/pentest-or-code-review</guid>
    <pubDate>Tue, 30 Sep 2025 00:00:00 +0530</pubDate>
    <category>Practice</category>
    <description>They answer different questions. Which one to buy depends on whether you need to know what an attacker can do today, or why it was possible in the first place.</description>
  </item>
  <item>
    <title>The password reset flow is your real authentication system</title>
    <link>https://cs.abinantony.io/blog/password-reset-flows</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/password-reset-flows</guid>
    <pubDate>Thu, 18 Sep 2025 00:00:00 +0530</pubDate>
    <category>Web security</category>
    <description>Nobody attacks your login form. They attack the flow that issues credentials to whoever holds an email address — which is usually written once and never reviewed.</description>
  </item>
  <item>
    <title>A pull request security checklist people actually use</title>
    <link>https://cs.abinantony.io/blog/pull-request-security-checklist</link>
    <guid isPermaLink="true">https://cs.abinantony.io/blog/pull-request-security-checklist</guid>
    <pubDate>Fri, 22 Aug 2025 00:00:00 +0530</pubDate>
    <category>Secure coding</category>
    <description>A forty-item security checklist gets ticked without being read. Seven questions, asked only when they apply, get answered honestly.</description>
  </item>
</channel>
</rss>