<?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: Suliman Abdulrazzaq</title>
    <description>The latest articles on DEV Community by Suliman Abdulrazzaq (@suliman_abdulrazzaq_14907).</description>
    <link>https://dev.to/suliman_abdulrazzaq_14907</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%2F3696667%2F2e124610-b88b-4782-8242-96c5b528520f.png</url>
      <title>DEV Community: Suliman Abdulrazzaq</title>
      <link>https://dev.to/suliman_abdulrazzaq_14907</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suliman_abdulrazzaq_14907"/>
    <language>en</language>
    <item>
      <title>How to Stop Stolen Session Cookies in Node.js using Device Bound Session Credentials (DBSC)</title>
      <dc:creator>Suliman Abdulrazzaq</dc:creator>
      <pubDate>Sun, 24 May 2026 22:39:56 +0000</pubDate>
      <link>https://dev.to/suliman_abdulrazzaq_14907/how-to-stop-stolen-session-cookies-in-nodejs-using-device-bound-session-credentials-dbsc-58op</link>
      <guid>https://dev.to/suliman_abdulrazzaq_14907/how-to-stop-stolen-session-cookies-in-nodejs-using-device-bound-session-credentials-dbsc-58op</guid>
      <description>&lt;p&gt;Web applications still rely heavily on session cookies — and that creates a serious security problem:&lt;/p&gt;

&lt;p&gt;If a session cookie gets stolen (via XSS, malware, logs, or proxy leaks), it can often be replayed from another device with no resistance.&lt;/p&gt;

&lt;p&gt;This is exactly the gap that Device Bound Session Credentials (DBSC) aims to solve.&lt;/p&gt;

&lt;p&gt;DBSC is a W3C specification that binds a session to a device-held cryptographic key instead of treating cookies as pure bearer tokens.&lt;/p&gt;

&lt;p&gt;In this article, I’ll show a practical Node.js implementation using dbsc-toolkit, an open-source library that brings DBSC support to real-world backend frameworks.&lt;/p&gt;

&lt;p&gt;🔐 What DBSC Changes&lt;/p&gt;

&lt;p&gt;Traditional cookies:&lt;/p&gt;

&lt;p&gt;Whoever has the cookie → owns the session&lt;/p&gt;

&lt;p&gt;DBSC model:&lt;/p&gt;

&lt;p&gt;Session is tied to a device key (TPM / Secure Enclave / WebCrypto fallback)&lt;br&gt;
Stolen cookies alone are useless on another device&lt;br&gt;
Server verifies proof of device possession on requests&lt;br&gt;
⚙️ What dbsc-toolkit provides&lt;/p&gt;

&lt;p&gt;dbsc-toolkit is a Node.js implementation of DBSC with:&lt;/p&gt;

&lt;p&gt;Session registration flow&lt;br&gt;
Challenge / response verification&lt;br&gt;
Session binding + validation&lt;br&gt;
Express / Fastify / Hono / Next.js support&lt;br&gt;
Redis / PostgreSQL / Memory storage adapters&lt;br&gt;
Optional Web Crypto fallback for non-Chromium browsers&lt;br&gt;
🚀 Quick Example (Express)&lt;br&gt;
import express from "express";&lt;br&gt;
import { randomUUID } from "node:crypto";&lt;br&gt;
import { createDbsc } from "dbsc-toolkit/express";&lt;br&gt;
import { MemoryStorage } from "dbsc-toolkit/storage/memory";&lt;/p&gt;

&lt;p&gt;const app = express();&lt;br&gt;
app.use(express.json());&lt;/p&gt;

&lt;p&gt;const dbsc = createDbsc({ storage: new MemoryStorage() });&lt;br&gt;
dbsc.install(app);&lt;/p&gt;

&lt;p&gt;app.post("/login", async (req, res) =&amp;gt; {&lt;br&gt;
  await dbsc.bind(res, randomUUID(), { userId: req.body.username });&lt;br&gt;
  res.json({ ok: true });&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;app.get("/me", (req, res) =&amp;gt; {&lt;br&gt;
  res.json(res.locals.dbsc);&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;app.listen(3000);&lt;br&gt;
🧪 Why this matters&lt;/p&gt;

&lt;p&gt;Most modern auth systems still rely on bearer-based sessions (cookies or JWTs).&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;p&gt;XSS → session theft&lt;br&gt;
logs → session leakage&lt;br&gt;
proxy leaks → replay attacks&lt;br&gt;
malware → full account takeover&lt;/p&gt;

&lt;p&gt;DBSC changes the model from:&lt;/p&gt;

&lt;p&gt;"Who has the token?"&lt;/p&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;p&gt;"Who owns the device that can prove the key?"&lt;/p&gt;

&lt;p&gt;🌐 Compatibility&lt;/p&gt;

&lt;p&gt;dbsc-toolkit works with:&lt;/p&gt;

&lt;p&gt;Node.js (Express, Fastify, Hono, Next.js)&lt;br&gt;
Chrome (native DBSC on supported versions)&lt;br&gt;
Firefox / Safari (WebCrypto fallback)&lt;br&gt;
Redis / PostgreSQL / Memory storage&lt;br&gt;
📦 Repository&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/SulimanAbdulrazzaq/dbsc-toolkit" rel="noopener noreferrer"&gt;https://github.com/SulimanAbdulrazzaq/dbsc-toolkit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💬 Notes&lt;/p&gt;

&lt;p&gt;This project is based on the current W3C DBSC specification and is intended for experimentation, prototyping, and early adoption in Node.js authentication systems.&lt;/p&gt;

&lt;p&gt;Feedback, security review, and spec alignment suggestions are welcome.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>auth</category>
      <category>security</category>
      <category>javascript</category>
    </item>
    <item>
      <title>I built an AI agent that understands your AWS infrastructure</title>
      <dc:creator>Suliman Abdulrazzaq</dc:creator>
      <pubDate>Sun, 08 Mar 2026 11:41:01 +0000</pubDate>
      <link>https://dev.to/suliman_abdulrazzaq_14907/i-built-an-ai-agent-that-understands-your-aws-infrastructure-55g3</link>
      <guid>https://dev.to/suliman_abdulrazzaq_14907/i-built-an-ai-agent-that-understands-your-aws-infrastructure-55g3</guid>
      <description>&lt;p&gt;Most teams managing AWS today don't rely on the CLI directly anymore.&lt;/p&gt;

&lt;p&gt;Instead, infrastructure is usually managed using &lt;strong&gt;Infrastructure as Code (IaC)&lt;/strong&gt; tools like Terraform, Pulumi, or CloudFormation.&lt;/p&gt;

&lt;p&gt;IaC is great for defining infrastructure because it provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reproducibility&lt;/li&gt;
&lt;li&gt;version control&lt;/li&gt;
&lt;li&gt;predictable deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But even with IaC, engineers still face operational tasks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;investigating infrastructure issues&lt;/li&gt;
&lt;li&gt;understanding relationships between resources&lt;/li&gt;
&lt;li&gt;making quick changes during incidents&lt;/li&gt;
&lt;li&gt;handling repetitive operational tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tasks often require jumping between the AWS console, documentation, logs, and infrastructure definitions.&lt;/p&gt;

&lt;p&gt;That made me wonder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if an AI agent could understand your AWS infrastructure and help with those operational workflows?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Zesky AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can see it here:&lt;br&gt;
&lt;a href="https://zeskyai.com" rel="noopener noreferrer"&gt;https://zeskyai.com&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Not a replacement for IaC
&lt;/h2&gt;

&lt;p&gt;Tools like Terraform or Pulumi remain the best way to &lt;strong&gt;define infrastructure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Zesky AI is not meant to replace IaC or the AWS console.&lt;/p&gt;

&lt;p&gt;Instead, the goal is to assist with &lt;strong&gt;operational workflows around infrastructure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Think of it more like an &lt;strong&gt;AI DevOps assistant&lt;/strong&gt; that helps engineers understand and safely interact with their cloud environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Instead of navigating multiple dashboards or writing commands, you describe what you want in plain English.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Open port 443 for my web server"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The system will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;scan your AWS resources&lt;/li&gt;
&lt;li&gt;identify the relevant instance and security group&lt;/li&gt;
&lt;li&gt;check existing rules&lt;/li&gt;
&lt;li&gt;propose the correct change&lt;/li&gt;
&lt;li&gt;wait for your approval before executing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key idea is that the system &lt;strong&gt;analyzes the infrastructure first&lt;/strong&gt; before suggesting any action.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why the resource-first approach matters
&lt;/h2&gt;

&lt;p&gt;Many AI tools generate commands without understanding the real infrastructure.&lt;/p&gt;

&lt;p&gt;But cloud environments are complex, and running the wrong command can break production systems.&lt;/p&gt;

&lt;p&gt;That’s why the agent first analyzes resources such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instances&lt;/li&gt;
&lt;li&gt;security groups&lt;/li&gt;
&lt;li&gt;networking rules&lt;/li&gt;
&lt;li&gt;VPC relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only after understanding the environment does it suggest an action.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example scenarios
&lt;/h2&gt;

&lt;p&gt;Some situations where this might be useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;investigating which security groups expose public ports&lt;/li&gt;
&lt;li&gt;quickly allowing HTTPS access during deployment&lt;/li&gt;
&lt;li&gt;understanding infrastructure relationships&lt;/li&gt;
&lt;li&gt;performing repetitive operational tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of navigating several AWS pages, the agent analyzes the environment and proposes the correct action.&lt;/p&gt;

&lt;p&gt;You still review and approve everything before it runs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Looking for feedback
&lt;/h2&gt;

&lt;p&gt;Right now I'm mostly trying to understand one thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would something like this actually be useful for AWS engineers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you work with AWS, DevOps, or cloud infrastructure, I’d really appreciate your feedback.&lt;/p&gt;

&lt;p&gt;What kinds of infrastructure tasks do you find the most repetitive or time-consuming?&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>ai</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
