<?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>DEV Community: Kokal Limited</title>
    <description>The latest articles on DEV Community by Kokal Limited (@kokal_limited_b7d45823e1d).</description>
    <link>https://dev.to/kokal_limited_b7d45823e1d</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4012892%2F19bdc8f3-7850-4def-acac-33d0c3fdb145.png</url>
      <title>DEV Community: Kokal Limited</title>
      <link>https://dev.to/kokal_limited_b7d45823e1d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kokal_limited_b7d45823e1d"/>
    <language>en</language>
    <item>
      <title>How to Change a Password Correctly: A Developer's Guide for Small Teams</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Fri, 31 Jul 2026 14:38:45 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/how-to-change-a-password-correctly-a-developers-guide-for-small-teams-27e1</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/how-to-change-a-password-correctly-a-developers-guide-for-small-teams-27e1</guid>
      <description>&lt;p&gt;Changing a password sounds trivial—click "forgot password," type a new one, done. But if you run infrastructure for a small business or team, doing it &lt;em&gt;correctly&lt;/em&gt; matters more than doing it fast. A sloppy password rotation can lock out services, break automation, or leave old credentials floating around in logs and config files.&lt;/p&gt;

&lt;p&gt;Here's how to do it right.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Don't Just Change It—Rotate It
&lt;/h2&gt;

&lt;p&gt;A password change should assume the old one is already compromised. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invalidate active sessions after the change&lt;/li&gt;
&lt;li&gt;Revoke API tokens or app passwords tied to the old credential&lt;/li&gt;
&lt;li&gt;Check for the password hardcoded in scripts, &lt;code&gt;.env&lt;/code&gt; files, or CI secrets
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Quick sweep for a leaked password string in your repo&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="s2"&gt;"OldP@ssw0rd"&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"*.env"&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"*.yml"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it shows up anywhere in version control, rotating the password isn't enough—you'll want to scrub the history too.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Generate, Don't Invent
&lt;/h2&gt;

&lt;p&gt;Humans are bad at randomness. Let a tool do it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 20-char high-entropy password&lt;/span&gt;
openssl rand &lt;span class="nt"&gt;-base64&lt;/span&gt; 20

&lt;span class="c"&gt;# Or with a password manager CLI&lt;/span&gt;
op item create &lt;span class="nt"&gt;--category&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;login &lt;span class="nt"&gt;--generate-password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'letters,digits,symbols,32'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aim for length over complexity. A 20+ character random string beats &lt;code&gt;P@ssw0rd!&lt;/code&gt; every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Update Everywhere It Lives
&lt;/h2&gt;

&lt;p&gt;The most common failure isn't a weak password—it's a &lt;em&gt;stale&lt;/em&gt; one. When you rotate a shared credential, update:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The password manager (single source of truth)&lt;/li&gt;
&lt;li&gt;CI/CD secrets and environment variables&lt;/li&gt;
&lt;li&gt;Any service accounts or cron jobs that authenticate with it&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Enforce It as Policy
&lt;/h2&gt;

&lt;p&gt;For a small team, tooling beats memory. Push everyone onto a shared password manager, require MFA, and stop forcing arbitrary 90-day resets—NIST guidance now recommends changing passwords only when there's evidence of compromise, not on a fixed timer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bottom Line
&lt;/h2&gt;

&lt;p&gt;A correct password change is a small workflow: rotate the assumption of compromise, generate high entropy, propagate everywhere, and back it with MFA. Do that consistently and password hygiene stops being a fire drill.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Building a Password Policy for a Small Dev Team (2026 Edition)</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Wed, 29 Jul 2026 13:18:51 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/building-a-password-policy-for-a-small-dev-team-2026-edition-20i5</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/building-a-password-policy-for-a-small-dev-team-2026-edition-20i5</guid>
      <description>&lt;p&gt;You've got five people. Nobody owns "IT." One dev still uses &lt;code&gt;Password1!&lt;/code&gt; for the CRM, and someone shared a login with a contractor over email last week. Your whole stack sits behind the weakest credential on the team.&lt;/p&gt;

&lt;p&gt;Small teams face enterprise-grade threats on a hobbyist budget. The Verizon 2026 DBIR found that &lt;strong&gt;43% of cyberattacks target small businesses&lt;/strong&gt;, and stolen credentials are still the top attack vector (53% of breaches). For teams of 10 or fewer, IBM puts the average credential-breach cost at &lt;strong&gt;$98,000&lt;/strong&gt;. A written, followed password policy is the cheapest defense you have.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the policy actually needs
&lt;/h3&gt;

&lt;p&gt;Here's the 2026 baseline vs. what you should ship:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Old minimum&lt;/th&gt;
&lt;th&gt;2026 recommendation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Length&lt;/td&gt;
&lt;td&gt;8 chars&lt;/td&gt;
&lt;td&gt;12+ chars (NIST SP 800-63B)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complexity&lt;/td&gt;
&lt;td&gt;Mixed types&lt;/td&gt;
&lt;td&gt;Drop composition rules — favor length&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MFA&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Mandatory, all accounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expiry&lt;/td&gt;
&lt;td&gt;Every 90 days&lt;/td&gt;
&lt;td&gt;Only on known compromise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password manager&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;Mandatory, company-wide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breach checks&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Auto-check against HIBP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared creds&lt;/td&gt;
&lt;td&gt;Allowed&lt;/td&gt;
&lt;td&gt;Forbidden — use secure sharing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both NIST and NCSC dropped mandatory periodic rotation. A 15-character passphrase beats a &lt;code&gt;P@ssw0rd!&lt;/code&gt; that ends up on a sticky note.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pick your infrastructure first
&lt;/h3&gt;

&lt;p&gt;Tools before rules. For a small team that means a shared password manager + MFA everywhere.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Password manager:&lt;/strong&gt; Bitwarden Teams or 1Password Business, ~$3–4/user/month. Shared vaults, secure sharing, breach monitoring. Keeper Business is worth a look if you're under HIPAA/PCI-DSS/ISO 27001.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MFA:&lt;/strong&gt; Non-negotiable on anything internet-facing. Google/Microsoft Authenticator are free; Duo has a free tier up to 10 users with wide app integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Enforce it in code, not vibes
&lt;/h3&gt;

&lt;p&gt;Don't just write "12+ characters" in a wiki — validate it. A quick example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_strong&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_pwned&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;sha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hashlib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sha1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;hexdigest&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;suffix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sha&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;sha&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt;
    &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.pwnedpasswords.com/range/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;suffix&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splitlines&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The HIBP range API uses k-anonymity — you only send the first 5 hash chars, never the password. Wire this into signup and password-reset flows so weak or breached credentials never make it in.&lt;/p&gt;

&lt;h3&gt;
  
  
  The rules employees actually follow
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;12+ characters, generated by the manager (nobody memorizes them)&lt;/li&gt;
&lt;li&gt;MFA on every account, no exceptions&lt;/li&gt;
&lt;li&gt;No shared logins — use the vault's sharing feature&lt;/li&gt;
&lt;li&gt;Rotate only on a known breach&lt;/li&gt;
&lt;li&gt;Run quarterly audits and a short onboarding walkthrough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A policy is only as good as its enforcement. Automate the checks, make the secure path the easy path, and revisit it every quarter.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>What Devs Should Learn From the Dashlane Brute-Force Attack</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Wed, 29 Jul 2026 13:03:14 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/what-devs-should-learn-from-the-dashlane-brute-force-attack-4b0i</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/what-devs-should-learn-from-the-dashlane-brute-force-attack-4b0i</guid>
      <description>&lt;p&gt;On &lt;strong&gt;May 31, 2026&lt;/strong&gt;, Dashlane got hit with a coordinated brute-force attack that locked thousands of users — including team-plan customers — out of their vaults during work hours. Dashlane &lt;a href="https://www.bleepingcomputer.com" rel="noopener noreferrer"&gt;confirmed to BleepingComputer&lt;/a&gt; that automated controls suspended targeted accounts. No internal systems were breached, and accounts were restored. But if your team depends on a password manager, this is worth a look.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual attack vector: credential stuffing
&lt;/h2&gt;

&lt;p&gt;The attack wasn't some exotic zero-day. It was &lt;strong&gt;credential stuffing&lt;/strong&gt; — replaying leaked email/password pairs against a high-value login endpoint. It works because of one stubborn human habit: password reuse.&lt;/p&gt;

&lt;p&gt;Attackers pull credential pairs from breach dumps and script them against a target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Conceptually, what an attacker's loop looks like
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;leaked_credentials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://vault.example.com/login&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                     &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;log_hit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# reused password → account compromised
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Per Verizon's 2024 DBIR, &lt;strong&gt;43% of cyberattacks target small businesses&lt;/strong&gt;, and only 14% are prepared. A locked password manager isn't a minor annoyance — it means no access to shared vaults, client creds, or infra secrets mid-incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defense: what you can actually configure
&lt;/h2&gt;

&lt;p&gt;If you administer a team plan, MFA enforcement is the single highest-leverage control. Credential stuffing dies instantly when a second factor is required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# The policy posture you want on any team password manager&lt;/span&gt;
&lt;span class="na"&gt;mfa&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enforcement&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;      &lt;span class="c1"&gt;# not "optional"&lt;/span&gt;
  &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;totp&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;webauthn&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;# prefer hardware/WebAuthn over SMS&lt;/span&gt;
&lt;span class="na"&gt;lockout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;policy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;admin-configurable&lt;/span&gt; &lt;span class="c1"&gt;# not vendor-locked&lt;/span&gt;
  &lt;span class="na"&gt;admin_override&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;       &lt;span class="c1"&gt;# someone can unlock a locked-out director&lt;/span&gt;
&lt;span class="na"&gt;audit_logging&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Consumer plans give you vendor-defined lockout and optional MFA. Business tiers (1Password Teams, Keeper Business, LastPass Business) let you &lt;em&gt;mandate&lt;/em&gt; MFA, configure lockout, and unlock accounts as an admin.&lt;/p&gt;

&lt;h2&gt;
  
  
  A short checklist for engineers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enforce MFA&lt;/strong&gt; — prefer WebAuthn/TOTP over SMS. This alone neutralizes credential stuffing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document recovery&lt;/strong&gt; — designate a backup admin who can override lockouts. Don't let one locked account halt the team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit reused passwords&lt;/strong&gt; — run your team through &lt;a href="https://haveibeenpwned.com" rel="noopener noreferrer"&gt;Have I Been Pwned&lt;/a&gt; or your manager's built-in breach report.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate-limit your own login endpoints&lt;/strong&gt; — if you ship auth, the same attack applies to you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The uncomfortable takeaway: even a well-built password manager can be knocked offline by attackers weaponizing &lt;em&gt;your users'&lt;/em&gt; reused passwords. MFA and a documented recovery path are what keep a Tuesday-morning attack from becoming a Tuesday-morning outage.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;StrongPassFactory&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>The 10-Minute Offboarding Checklist Every Dev Team Ignores</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Mon, 27 Jul 2026 13:09:17 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/the-10-minute-offboarding-checklist-every-dev-team-ignores-1m5k</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/the-10-minute-offboarding-checklist-every-dev-team-ignores-1m5k</guid>
      <description>&lt;p&gt;When an employee leaves, how fast can you kill their access? If it's not "under 10 minutes," you have a problem.&lt;/p&gt;

&lt;p&gt;In our analysis of SMB security incidents this year, failure to revoke former-employee access was the root cause of &lt;strong&gt;34% of preventable breaches&lt;/strong&gt; — more than phishing, more than weak passwords. The Verizon 2026 DBIR pegs 28% of breaches on internal actors, and ex-employees with live credentials are a big slice of that.&lt;/p&gt;

&lt;p&gt;These failures are quiet and boring. No zero-day, no APT — just a token nobody rotated. Which is exactly why they're so preventable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it breaks in small teams
&lt;/h2&gt;

&lt;p&gt;Enterprises wire HRIS into their IdP, so termination auto-deactivates accounts. Most of us run manual processes that fall apart under pressure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No account inventory&lt;/strong&gt; — 20+ SaaS subscriptions and nobody knows who has access to what.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSO blind spots&lt;/strong&gt; — you kill the IdP, but they signed up for three tools directly with a personal-looking email, bypassing SSO entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared vault chaos&lt;/strong&gt; — if they owned the team password vault, revoking them can lock everyone out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API keys and PATs&lt;/strong&gt; — the scariest one for devs. Personal access tokens keep working long after the human is gone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The NCSC measures the risk window in &lt;em&gt;hours, not days&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core checklist
&lt;/h2&gt;

&lt;p&gt;Run these in order, starting the minute notice is given:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Disable the identity provider account first (Entra ID / Google Workspace / Okta)&lt;/span&gt;
&lt;span class="c"&gt;# 2. Revoke ALL active sessions — invalidate live tokens, don't just reset the password&lt;/span&gt;
gcloud identity ... &lt;span class="c"&gt;# or your IdP's "sign out everywhere"&lt;/span&gt;

&lt;span class="c"&gt;# 3. Rotate the shared vault master + any secrets they could read&lt;/span&gt;
&lt;span class="c"&gt;# 4. Remove from every SaaS app individually (CRM, billing, PM, email)&lt;/span&gt;

&lt;span class="c"&gt;# 5. Kill API keys and personal access tokens — check every provider&lt;/span&gt;
gh auth status              &lt;span class="c"&gt;# audit GitHub PATs&lt;/span&gt;
aws iam list-access-keys &lt;span class="nt"&gt;--user-name&lt;/span&gt; former.employee
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Passwords are polite; &lt;strong&gt;session and token revocation is what actually locks the door.&lt;/strong&gt; A disabled account with a live OAuth token is still an open door.&lt;/p&gt;

&lt;p&gt;Automate what you can. Even a simple runbook — a checklist in your wiki with owners assigned per step — beats scrambling under emotional pressure the day someone gets walked out.&lt;/p&gt;

&lt;p&gt;The goal isn't enterprise tooling. It's a repeatable process you can run in 10 minutes, every single time.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Insider Threat Detection: SMB Password Policies That Actually Work</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Sat, 25 Jul 2026 13:05:33 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/insider-threat-detection-smb-password-policies-that-actually-work-125n</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/insider-threat-detection-smb-password-policies-that-actually-work-125n</guid>
      <description>&lt;p&gt;When we think about security threats, we default to the external attacker — ransomware, phishing, brute-force bots. But according to the Verizon 2025 DBIR, &lt;strong&gt;insider threats account for 34% of breaches&lt;/strong&gt; in small and medium businesses. And the top attack vector? Abused or mismanaged passwords.&lt;/p&gt;

&lt;p&gt;The good news: you don't need a SOC to defend against this. You need sane password policies and a few controls wired into your credential workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three kinds of insider
&lt;/h2&gt;

&lt;p&gt;Not every insider is malicious. Knowing the category tells you which control to reach for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Malicious&lt;/strong&gt; — departing staff or contractors intentionally misusing access (exfiltrating a customer DB before resignation). IBM pegs the average cost at ~£210k per incident.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Negligent&lt;/strong&gt; — well-meaning people bypassing policy for convenience: passwords in Slack, credentials in a shared spreadsheet, no logout on shared machines. This is the biggest bucket — &lt;strong&gt;56% of insider incidents&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compromised&lt;/strong&gt; — an attacker operating under a real employee's stolen identity. NCSC attributes &lt;strong&gt;72%&lt;/strong&gt; of detected UK SMB insider incidents to compromised credentials.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Controls that map to real attack patterns
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Just-in-time (JIT) privileged access.&lt;/strong&gt; Stop granting permanent admin. Issue elevated credentials that expire on a timer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example: time-boxed elevation policy&lt;/span&gt;
&lt;span class="na"&gt;grant&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;db-admin&lt;/span&gt;
  &lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;alice@company.com&lt;/span&gt;
  &lt;span class="na"&gt;ttl&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;30m&lt;/span&gt;          &lt;span class="c1"&gt;# auto-revoke after 30 minutes&lt;/span&gt;
  &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;
  &lt;span class="na"&gt;audit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Credential check-in / check-out.&lt;/strong&gt; Shared accounts (vendor portals, social logins, admin consoles) should live in a vault that logs access and blocks concurrent use.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[vault] alice checked OUT vendor-portal @ 14:02
[vault] bob requested vendor-portal → QUEUED (in use)
[vault] alice checked IN vendor-portal  @ 14:19
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Automated offboarding.&lt;/strong&gt; Every departure should trigger a revocation workflow — rotate any shared secrets the person touched, kill their sessions, and confirm.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Offboarding hook (pseudo)&lt;/span&gt;
revoke_sessions &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
rotate_shared_secrets &lt;span class="nt"&gt;--touched-by&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
disable_sso &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; notify_admin &lt;span class="s2"&gt;"offboarded: &lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why this works
&lt;/h2&gt;

&lt;p&gt;None of these require expensive tooling — most business password managers support JIT and check-in/check-out out of the box. The pattern is the same each time: &lt;strong&gt;short-lived credentials, logged access, and automatic revocation.&lt;/strong&gt; You reduce the blast radius of a malicious insider, remove the shortcuts a negligent one relies on, and shrink the window a compromised account stays useful.&lt;/p&gt;

&lt;p&gt;Start with a baseline password policy, layer these three controls on top, and you've covered the vast majority of insider-driven breaches without hiring a security team.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>MFA for SMBs in 2026: A Developer's Quick-Start Guide</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Thu, 23 Jul 2026 13:03:26 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/mfa-for-smbs-in-2026-a-developers-quick-start-guide-1poi</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/mfa-for-smbs-in-2026-a-developers-quick-start-guide-1poi</guid>
      <description>&lt;p&gt;If you build or maintain systems for a small business, multi-factor authentication (MFA) is the single highest-leverage security control you can ship. The Verizon 2026 DBIR found that &lt;strong&gt;81% of breaches involve stolen or weak passwords&lt;/strong&gt; — and MFA neutralizes most of those attacks even when credentials leak.&lt;/p&gt;

&lt;p&gt;Here's the developer's-eye view.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;p&gt;Passwords fail because people reuse them. When a third-party service gets breached, attackers run credential-stuffing against your login endpoint. MFA adds a second factor that makes automated attacks economically pointless. IBM's Cost of a Data Breach 2026 report showed SMBs with MFA on all accounts cut breach costs by &lt;strong&gt;67%&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick the right factor
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;MFA Type&lt;/th&gt;
&lt;th&gt;Security&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SMS codes&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Fallback only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TOTP apps&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Most SMB accounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push notifications&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;£2-5/user/mo&lt;/td&gt;
&lt;td&gt;Simple approval flows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware keys (FIDO2)&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;£25-50 once&lt;/td&gt;
&lt;td&gt;Admin &amp;amp; financial access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Passkeys (multi-device FIDO)&lt;/td&gt;
&lt;td&gt;Highest&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Passwordless future&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Skip SMS as a primary factor — NIST SP 800-63B no longer recommends it thanks to SIM-swap attacks (the UK NCSC logged a &lt;strong&gt;340% jump&lt;/strong&gt; in 2025).&lt;/p&gt;

&lt;h2&gt;
  
  
  TOTP is the sweet spot
&lt;/h2&gt;

&lt;p&gt;Time-based one-time passwords work offline, cost nothing, and are trivial to integrate. If you're on Node, most of the work is one library:&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="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;authenticator&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;otplib&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Generate a per-user secret at enrollment&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;secret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;authenticator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateSecret&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Build the otpauth:// URI for the QR code&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;authenticator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keyuri&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YourApp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Verify the 6-digit code on login&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isValid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;authenticator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;secret&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Store &lt;code&gt;secret&lt;/code&gt; encrypted at rest, render &lt;code&gt;uri&lt;/code&gt; as a QR code (Google Authenticator, Authy, 2FAS all scan it), and gate the session on &lt;code&gt;isValid&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No &lt;strong&gt;backup codes&lt;/strong&gt; → users get locked out and disable MFA.&lt;/li&gt;
&lt;li&gt;Verifying tokens without a &lt;strong&gt;replay window&lt;/strong&gt; or rate limit.&lt;/li&gt;
&lt;li&gt;Storing TOTP secrets in plaintext.&lt;/li&gt;
&lt;li&gt;Treating SMS as your primary factor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For anything privileged — admin panels, payment systems — step up to FIDO2/WebAuthn hardware keys. They're phishing-resistant in a way TOTP isn't.&lt;/p&gt;

&lt;p&gt;Ship MFA before you ship the next feature. It's the cheapest security win you'll get all year.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Phishing Prevention for Small Dev Teams: A 2026 Playbook</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Tue, 21 Jul 2026 13:03:41 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/phishing-prevention-for-small-dev-teams-a-2026-playbook-2od2</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/phishing-prevention-for-small-dev-teams-a-2026-playbook-2od2</guid>
      <description>&lt;p&gt;If you build software for a small business, security often lands on your desk by default. And the highest-ROI thing you can ship isn't a fancy WAF — it's phishing prevention. The &lt;strong&gt;Verizon 2026 DBIR&lt;/strong&gt; puts 74% of breaches on the human element, with phishing as the primary infection vector. 43% target small businesses specifically.&lt;/p&gt;

&lt;p&gt;Here's why SMBs get hit: attackers follow the path of least resistance. Enterprises run simulated phishing platforms and advanced email filtering. Teams under 50 people usually run none of that. KnowBe4's 2025 report found SMB employees are &lt;strong&gt;3.5x more likely&lt;/strong&gt; to fall for a phishing email than enterprise counterparts. The average phishing-related breach for companies under 100 employees costs &lt;strong&gt;$82,000&lt;/strong&gt; (IBM, 2026) — enough to sink a small operation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The dominant vector is credential theft
&lt;/h3&gt;

&lt;p&gt;Most phishing isn't exotic. It's a convincing login page that harvests passwords:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;Subject&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; [Action Required] Verify your account&lt;/span&gt;
&lt;span class="nt"&gt;From&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; security@your-saas-provider.co   ← note the .co&lt;/span&gt;

Your session expired. Re-authenticate here:
https://accounts-verify.example-login.net/reset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The mismatched domain, the urgency, the generic greeting — those are the tells. But you can't rely on humans catching every one. Treat MFA as the backstop: even a phished password fails without the second factor.&lt;/p&gt;

&lt;h3&gt;
  
  
  What to actually enforce (developer edition)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MFA everywhere&lt;/strong&gt;, prefer WebAuthn/passkeys over TOTP over SMS. Phishing-resistant by design.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email auth records&lt;/strong&gt; so spoofed senders get flagged:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;example.com. TXT "v=spf1 include:_spf.google.com -all"
_dmarc.example.com. TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set DMARC to &lt;code&gt;p=reject&lt;/code&gt; once you've monitored with &lt;code&gt;p=none&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A dead-simple reporting path.&lt;/strong&gt; A &lt;code&gt;phishing@&lt;/code&gt; alias or a Slack &lt;code&gt;/report-phish&lt;/code&gt; shortcut beats a 6-step wiki page. Friction kills reporting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;20-minute onboarding briefing&lt;/strong&gt; for every new hire: what phishing looks like, the red flags, and exactly what to do when they're unsure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When something slips through
&lt;/h3&gt;

&lt;p&gt;Have a written SMB response plan before you need it: reset the affected credential, revoke active sessions, check auth logs for lateral movement, and notify anyone whose access chains off that account. Rehearse it once — a phished credential at a small business can unlock bank accounts, customer data, and partner networks.&lt;/p&gt;

&lt;p&gt;Phishing prevention doesn't need a six-figure budget. It needs structured training, a few technical controls you can ship this week, and a reporting culture that turns employees into your first line of defense.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Password Compliance for SMBs: A Developer's Guide to HIPAA &amp; PCI in 2026</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Sun, 19 Jul 2026 13:03:59 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/password-compliance-for-smbs-a-developers-guide-to-hipaa-pci-in-2026-4be9</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/password-compliance-for-smbs-a-developers-guide-to-hipaa-pci-in-2026-4be9</guid>
      <description>&lt;p&gt;If your app touches patient records, card data, or EU customer info, password compliance isn't optional — and the fines are brutal. A single HIPAA violation can run up to &lt;strong&gt;$50,000 per incident&lt;/strong&gt;, and PCI DSS non-compliance can cost you the ability to process cards entirely.&lt;/p&gt;

&lt;p&gt;The good news for developers: the requirements across &lt;strong&gt;HIPAA&lt;/strong&gt;, &lt;strong&gt;PCI DSS v4.0&lt;/strong&gt;, and &lt;strong&gt;GDPR&lt;/strong&gt; overlap heavily. Build one solid auth policy and you satisfy multiple frameworks at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  HIPAA: what auditors actually expect
&lt;/h2&gt;

&lt;p&gt;The HIPAA Security Rule (45 CFR § 164.312) is deliberately vague — it asks for "reasonable and appropriate" safeguards rather than exact character counts. In practice, auditors accept &lt;strong&gt;NIST SP 800-63B&lt;/strong&gt; as the baseline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12+ character passwords&lt;/li&gt;
&lt;li&gt;No forced arbitrary rotation&lt;/li&gt;
&lt;li&gt;Breach/compromised-password checking&lt;/li&gt;
&lt;li&gt;MFA (now considered the "standard of care" for ePHI)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The concrete technical controls you'll implement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unique User ID     → one account per employee, no shared logins
Automatic Logoff   → 5–15 min idle timeout
Emergency Access   → break-glass credential, logged on use
Integrity Controls → audit trails tied to individual credentials
Encryption         → HTTPS everywhere + hashed password storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On storage — never roll your own. Use a slow, salted hash:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Argon2id is the current recommendation
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;argon2&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;PasswordHasher&lt;/span&gt;

&lt;span class="n"&gt;ph&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;PasswordHasher&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# sane defaults: memory, time, parallelism
&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user-supplied-password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;ph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user-supplied-password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The penalty scale
&lt;/h3&gt;

&lt;p&gt;HIPAA fines are tiered by culpability, from &lt;strong&gt;$100&lt;/strong&gt; (did not know) up to &lt;strong&gt;$1.5M&lt;/strong&gt; per violation category (willful neglect, uncorrected). For a 5–15 person clinic, one password-related breach easily means tens of thousands in fines — before notification and reputational costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  PCI DSS v4.0 &amp;amp; GDPR
&lt;/h2&gt;

&lt;p&gt;If you accept cards, PCI DSS v4.0 layers on similar rules: minimum 12-character passwords, MFA for all access into the cardholder data environment, and no shared accounts.&lt;/p&gt;

&lt;p&gt;GDPR's Article 32 never says "password" explicitly, but "appropriate technical measures" is interpreted the same way — strong auth, encryption, and access controls.&lt;/p&gt;

&lt;h2&gt;
  
  
  One policy to rule them all
&lt;/h2&gt;

&lt;p&gt;Because the frameworks converge, a single implementation covers all three:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ 12+ char minimum, screen against breach corpora (HaveIBeenPwned API)
✓ MFA on every account
✓ Argon2id / bcrypt password hashing
✓ Unique per-user credentials + audit logging
✓ Idle session timeout
✓ TLS in transit, encryption at rest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that list off and you're compliant across HIPAA, PCI, and GDPR simultaneously — no enterprise budget required.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Vendor Password Security: Third-Party Access for SMBs</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Wed, 15 Jul 2026 13:11:37 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/vendor-password-security-third-party-access-for-smbs-5f71</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/vendor-password-security-third-party-access-for-smbs-5f71</guid>
      <description>&lt;p&gt;Not logged in · Please run /login&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>How We Stopped Password Reuse From Sinking Our Small Team</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Mon, 13 Jul 2026 13:21:52 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/how-we-stopped-password-reuse-from-sinking-our-small-team-1e6e</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/how-we-stopped-password-reuse-from-sinking-our-small-team-1e6e</guid>
      <description>&lt;p&gt;If you work at a small company, you already know the credential situation: five to twenty people, each juggling logins for email, CRM, payroll, cloud storage, and a dozen vendor portals. Some save passwords in the browser. Some keep a spreadsheet. A few just hit "forgot password" every single time.&lt;/p&gt;

&lt;p&gt;That's not a workflow — it's a breach waiting to happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers are ugly
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;81%&lt;/strong&gt; of breaches involve stolen or weak passwords (Verizon 2026 DBIR)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$98,000&lt;/strong&gt; average cost per incident for businesses under 50 employees (IBM 2026)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;65%&lt;/strong&gt; of people reuse passwords across work and personal accounts (NCSC)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one is the killer. Reuse means one breached marketing SaaS can unlock your entire stack. As developers, we get this intuitively — it's the same reason you never store secrets in plaintext.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a password manager actually fixes
&lt;/h2&gt;

&lt;p&gt;Think of a business password manager as three controls bundled together:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Generation&lt;/strong&gt; — every account gets a unique secret from a CSPRNG, not &lt;code&gt;Summer2026!&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# what a decent generator does under the hood&lt;/span&gt;
openssl rand &lt;span class="nt"&gt;-base64&lt;/span&gt; 24
&lt;span class="c"&gt;# =&amp;gt; 8f2Kd9xQ1mZ7pL4vR6nT0wYc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Storage&lt;/strong&gt; — encrypted at rest and in transit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;at rest:     AES-256
in transit:  TLS 1.3
access:      authorized team members only
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Policy enforcement&lt;/strong&gt; — admins set minimum standards, require MFA on the vault, and audit who touched what.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to screen for (the dev checklist)
&lt;/h2&gt;

&lt;p&gt;Consumer tools and free personal vaults skip the parts teams need. When evaluating, look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Admin console&lt;/strong&gt; with shared vaults per department (finance, ops, eng)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Role-based access&lt;/strong&gt; — admin / editor / viewer, not "everyone gets everything"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant revocation&lt;/strong&gt; when someone offboards&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit logs&lt;/strong&gt; so credential access is traceable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MFA enforcement&lt;/strong&gt; on the vault itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a tool can't do role-based access and instant revoke, you're back to sharing secrets over Slack — which defeats the entire point.&lt;/p&gt;

&lt;p&gt;CISA explicitly recommends password managers as a core control for organizations of &lt;em&gt;any&lt;/em&gt; size. Pair one with MFA and you've closed the gap most SMB breaches walk right through.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;You don't need an enterprise IT team to fix credential hygiene. Pick a manager with real admin controls, generate unique passwords everywhere, turn on MFA, and audit access quarterly. It's the single highest-leverage security move a small team can make in an afternoon.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Passkeys for SMBs: Going Passwordless in 2026 (A Developer's Guide)</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Mon, 13 Jul 2026 13:20:39 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/passkeys-for-smbs-going-passwordless-in-2026-a-developers-guide-2i82</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/passkeys-for-smbs-going-passwordless-in-2026-a-developers-guide-2i82</guid>
      <description>&lt;p&gt;If you build or maintain internal tools for a small team, you've probably watched passwords rot from the inside: reused across a dozen SaaS apps, pasted into Slack, parked in a spreadsheet named &lt;code&gt;logins_final_v2.xlsx&lt;/code&gt;. Passkeys fix the root cause. Here's the developer-level version of why, and how the flow actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Passwords vs. passkeys, architecturally
&lt;/h2&gt;

&lt;p&gt;A password is a &lt;strong&gt;shared secret&lt;/strong&gt; — you know it, the server knows it, and anything on the wire between you can grab it. A passkey is a &lt;strong&gt;FIDO2 credential&lt;/strong&gt; built on public-key cryptography. Your device holds the private key; the server only ever sees the public key.&lt;/p&gt;

&lt;p&gt;That single difference kills whole attack classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Phishing&lt;/strong&gt; — there's nothing to type, and the credential is bound to the origin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breach leaks&lt;/strong&gt; — the server never held your private key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credential stuffing&lt;/strong&gt; — each assertion is scoped to a specific domain, so it can't be replayed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The flow
&lt;/h2&gt;

&lt;p&gt;Registration stores a public key. Authentication is a challenge/response the server verifies against it:&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="c1"&gt;// Authentication (simplified WebAuthn)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;assertion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;credentials&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="na"&gt;publicKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;challenge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;serverChallenge&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="c1"&gt;// random bytes from your backend&lt;/span&gt;
    &lt;span class="na"&gt;rpId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;yourapp.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;               &lt;span class="c1"&gt;// origin-bound: phishing-resistant&lt;/span&gt;
    &lt;span class="na"&gt;userVerification&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;required&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="c1"&gt;// face / fingerprint / device PIN&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Device signs the challenge with the private key.&lt;/span&gt;
&lt;span class="c1"&gt;// Backend verifies the signature against the stored public key.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The private key never leaves the authenticator. No secret crosses the network — just a signature over a one-time challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters for small teams
&lt;/h2&gt;

&lt;p&gt;You don't need an enterprise identity platform to benefit. In 2026, Google Workspace, GitHub, Slack, and basically every major business app accept passkeys out of the box — no new software, no dedicated IT hire.&lt;/p&gt;

&lt;p&gt;The payoff is concrete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Verizon 2026 DBIR attributes &lt;strong&gt;81% of breaches&lt;/strong&gt; to stolen or weak passwords.&lt;/li&gt;
&lt;li&gt;IBM's 2026 report puts the average breach cost for sub-50-employee businesses at &lt;strong&gt;$98,000&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Google measured passkeys cutting login time by &lt;strong&gt;~40%&lt;/strong&gt; with a higher first-attempt success rate — which for a small shop means fewer reset tickets and "I'm locked out" pings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where passwords still hang around
&lt;/h2&gt;

&lt;p&gt;Passkeys aren't a silver bullet. You'll still want a password (or recovery flow) for account bootstrap, legacy systems without WebAuthn support, and cross-device recovery when someone loses their only authenticator. Treat passkeys as the default and passwords as the fallback, not the reverse.&lt;/p&gt;

&lt;p&gt;If you're rolling this out across a team, start by enabling passkeys on your highest-value accounts (email, code host, cloud console) and work outward.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://strongpassfactory.com" rel="noopener noreferrer"&gt;strongpassfactory.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>passwordsecurity</category>
      <category>onlinesafety</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Test Published</title>
      <dc:creator>Kokal Limited</dc:creator>
      <pubDate>Mon, 13 Jul 2026 13:14:14 +0000</pubDate>
      <link>https://dev.to/kokal_limited_b7d45823e1d/test-published-2ec4</link>
      <guid>https://dev.to/kokal_limited_b7d45823e1d/test-published-2ec4</guid>
      <description>&lt;h1&gt;
  
  
  Test
&lt;/h1&gt;

</description>
      <category>security</category>
    </item>
  </channel>
</rss>
