<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Secure Design on Nalar</title>
    <link>https://nalar.dev/tags/secure-design/</link>
    <description>Recent content in Secure Design on Nalar</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 04 Sep 2026 00:00:00 +0700</lastBuildDate>
    <atom:link href="https://nalar.dev/tags/secure-design/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Authorize Every Object Access</title>
      <link>https://nalar.dev/authorize-every-object-access/</link>
      <pubDate>Fri, 04 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/authorize-every-object-access/</guid>
      <description>&lt;p&gt;A developer can correctly require login and still expose another user&amp;rsquo;s data. The mistake is simple: the application proves &lt;strong&gt;who&lt;/strong&gt; made the request, then assumes that identity is enough to access whichever record the request names.&lt;/p&gt;&#xA;&lt;p&gt;Consider an endpoint that returns an invoice by identifier. A signed-in user requests invoice &lt;code&gt;1842&lt;/code&gt;, the application loads invoice &lt;code&gt;1842&lt;/code&gt;, and the response succeeds. If the application never checks whether that user is allowed to read that invoice, changing the requested identifier may cross an authorization boundary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fail Closed at Authorization Boundaries</title>
      <link>https://nalar.dev/fail-closed-at-authorization-boundaries/</link>
      <pubDate>Fri, 04 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/fail-closed-at-authorization-boundaries/</guid>
      <description>&lt;p&gt;An application can have carefully designed roles and permissions and still expose protected actions through one small mistake: treating an authorization error as permission to continue.&lt;/p&gt;&#xA;&lt;p&gt;This problem appears when access control depends on code, policy data, or another service that can fail. A timeout, malformed response, missing record, or unexpected exception creates uncertainty. If the application converts that uncertainty into &lt;code&gt;allow&lt;/code&gt;, a reliability failure becomes an access-control failure.&lt;/p&gt;&#xA;&lt;p&gt;A useful defensive rule is to &lt;strong&gt;fail closed at an authorization boundary&lt;/strong&gt;. In plain language, perform the protected action only when the system has enough trustworthy information to make an explicit allow decision. If it cannot establish that decision, do not grant the access.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
