<?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: nero</title>
    <description>The latest articles on DEV Community by nero (@itskhalid_99).</description>
    <link>https://dev.to/itskhalid_99</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%2F4087085%2F2caa628c-a7cf-40a5-a243-c959ea7574b6.png</url>
      <title>DEV Community: nero</title>
      <link>https://dev.to/itskhalid_99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itskhalid_99"/>
    <language>en</language>
    <item>
      <title>Why “It Works” Isn’t Proof It’s Safe</title>
      <dc:creator>nero</dc:creator>
      <pubDate>Sat, 31 Oct 2026 08:40:52 +0000</pubDate>
      <link>https://dev.to/itskhalid_99/why-it-works-isnt-proof-its-safe-3hei</link>
      <guid>https://dev.to/itskhalid_99/why-it-works-isnt-proof-its-safe-3hei</guid>
      <description>&lt;p&gt;The happy-path trap almost every vibe coder falls into — usually once, the hard way&lt;/p&gt;

&lt;p&gt;You know that moment.&lt;br&gt;
You click the button.&lt;br&gt;
The thing happens.&lt;br&gt;
The data shows up exactly where it should.&lt;/p&gt;

&lt;p&gt;Your chest does that little relieved-proud thing. It works!&lt;/p&gt;

&lt;p&gt;Here’s the uncomfortable truth: that feeling is proof of exactly one thing.&lt;br&gt;
It works when you — the person who built it — use it the way you intended, logged in as yourself. That’s it. That’s all it proves.&lt;/p&gt;

&lt;p&gt;You’ve seen this movie before, just in a different building&lt;/p&gt;

&lt;p&gt;If you’ve spent time in IT, you already know this trap.&lt;br&gt;
It just wore a different uniform.&lt;/p&gt;

&lt;p&gt;A firewall rule that “works” because traffic from your own laptop sails through tells you nothing about what happens from somewhere you didn’t expect. Testing an office door lock with your own keycard tells you nothing about whether it actually refuses a card that shouldn’t work.&lt;/p&gt;

&lt;p&gt;You wouldn’t sign off on either of those based on one clean test from your own seat. So why would your app be any different?&lt;/p&gt;

&lt;p&gt;The mindset shift, in one sentence&lt;/p&gt;

&lt;p&gt;Stop asking “does this work?”&lt;br&gt;
Start asking “what happens when someone tries to make it not work, on purpose?”&lt;/p&gt;

&lt;p&gt;That single sentence is the difference between an app that feels done and an app that actually is. And it’s a shift, not a skill — you don’t need to learn anything new to make it. You just need to remember to ask the second question.&lt;/p&gt;

&lt;p&gt;Happy-path testing vs. the test that actually matters&lt;/p&gt;

&lt;p&gt;Happy-path testing is you, logged in as yourself, clicking through the app the way you built it to be clicked through. Expected inputs.&lt;br&gt;
One request at a time. It always looks great, because you designed it to look great for exactly this path.&lt;/p&gt;

&lt;p&gt;Adversarial testing is different. It’s logging in as a second, unprivileged account and trying to see what you shouldn’t. It’s editing a request directly — the same instinct as testing an ACL. It’s throwing blank fields, huge inputs, and wrong values at it on purpose, just to see what breaks.&lt;/p&gt;

&lt;p&gt;You don’t need to write a single line of code for this.&lt;br&gt;
A second free email address and your browser’s built-in developer tools — already sitting there, no install required — are the entire toolkit.&lt;/p&gt;

&lt;p&gt;Why your AI tool won’t catch this for you&lt;/p&gt;

&lt;p&gt;Here’s the part that catches people off guard.&lt;br&gt;
Ask your AI tool for a feature, and it builds exactly that feature.&lt;br&gt;
Nothing more.&lt;/p&gt;

&lt;p&gt;It won’t volunteer “you should probably check who else can see this,” any more than a brand-new help-desk hire thinks to ask “should there be a limit on reset attempts?” unless someone already wrote that into the process. AI is fast, capable, and confident — and completely silent about the door it left wide open on the way out.&lt;/p&gt;

&lt;p&gt;That’s not a flaw you fix by reading more code.&lt;br&gt;
It’s a follow-up question you have to remember to ask, every single time.&lt;/p&gt;

&lt;p&gt;The one tool that does 80% of the work&lt;/p&gt;

&lt;p&gt;Every browser has a panel showing every request your app makes, and exactly what comes back. Right-click, Inspect, Network tab. That’s it.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffs9fkdqltaht7aevm7hs.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffs9fkdqltaht7aevm7hs.webp" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do the thing you’re testing. Read the number that comes back.&lt;br&gt;
200 means it worked.&lt;br&gt;
401 means you’re not logged in.&lt;br&gt;
403 means you’re logged in, but blocked — usually a good sign.&lt;br&gt;
500 means something broke on the server.&lt;/p&gt;

&lt;p&gt;Open it, click the thing, read the number. That’s the whole skill. It’s the same instinct as checking a ping result or a packet capture — just pointed at a browser instead of a network.&lt;/p&gt;

&lt;p&gt;The quick, honest gut check&lt;/p&gt;

&lt;p&gt;Have you ever logged in as a second test account and tried to view the first account’s data? Have you opened the Network tab and actually watched a request happen? Have you asked your AI tool “who’s allowed to call this, and how would you check that?” — not just “does this work?”&lt;/p&gt;

&lt;p&gt;If most of those are unchecked right now, that’s completely normal.&lt;br&gt;
It’s also exactly the gap worth closing before you tell anyone the link is live.&lt;/p&gt;

&lt;p&gt;The version of you on the other side of this&lt;/p&gt;

&lt;p&gt;Picture shipping something and actually meaning it when you say “it’s solid.” Not crossed fingers. Not “it worked when I tried it.”&lt;br&gt;
Actual, tested, I-tried-to-break-this-myself confidence.&lt;/p&gt;

&lt;p&gt;That’s the difference between someone who got lucky and someone who builds like they know what they’re doing. The tools are the same either way. The only thing that changes is whether you remember to ask the second question.&lt;/p&gt;

&lt;p&gt;Ship it. Then go try to break it yourself, before someone else does it for you.&lt;/p&gt;

</description>
      <category>security</category>
      <category>ai</category>
      <category>vibecoding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Every Vibe-Coded App Breaks the Same Way</title>
      <dc:creator>nero</dc:creator>
      <pubDate>Thu, 20 Aug 2026 20:40:34 +0000</pubDate>
      <link>https://dev.to/itskhalid_99/why-every-vibe-coded-app-breaks-the-same-way-40k2</link>
      <guid>https://dev.to/itskhalid_99/why-every-vibe-coded-app-breaks-the-same-way-40k2</guid>
      <description>&lt;p&gt;You know that feeling when a change sails through testing, everything’s green, and it still gets stopped at change advisory board because someone asks the one question testing never checks?&lt;/p&gt;

&lt;p&gt;That’s not bureaucracy being difficult. That’s the system catching something functional testing was never built to catch. Vibe coding has the exact same blind spot, and almost nobody’s built the CAB step for it yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passing the Test Isn’t the Same as Passing Review&lt;/strong&gt;&lt;br&gt;
UAT tells you a change does what it’s supposed to do. It says nothing about what happens when someone pokes at it sideways.&lt;/p&gt;

&lt;p&gt;An AI-built app is the same story. It ran. The button worked. None of that is proof it’s safe. It’s proof it works when you, the person who built it, use it exactly as intended.&lt;/p&gt;

&lt;p&gt;Nothing in the vibe coding workflow forces that second review. You have to build the CAB step yourself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Seven Things That Keep Showing Up&lt;/strong&gt;&lt;br&gt;
I went looking for patterns across the vibe-coded apps I reviewed while writing my security handbook. Different founders, different ideas, different stacks in the details. Same seven problems, in some combination, every single time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9m8rfx4m7dtf51um52xo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9m8rfx4m7dtf51um52xo.png" alt=" " width="800" height="885"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;None of these require you to read a line of code to catch. They require knowing which questions to ask, and where to look for the answer. A dashboard. A browser panel. A log. The same way you’d check a switch config without reading the vendor’s source.&lt;/p&gt;

&lt;p&gt;I’ve already gone deep on two of these on this profile, the key exposure and RLS specifically, with the exact fix for each. This piece is the map. That one’s the terrain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Isn’t a Hypothetical&lt;/strong&gt;&lt;br&gt;
Veracode’s 2025 GenAI Code Security Report tested over 100 AI models across 80 coding tasks. AI-generated code introduced a real vulnerability 45% of the time. Worth being straight about what that stat actually is: it’s from curated benchmark tasks, not a direct study of vibe-coded apps in the wild. It’s a strong signal, not a precise match.&lt;/p&gt;

&lt;p&gt;The real-world incidents are more concrete. In February 2026, a researcher auditing a Lovable-built app found an inverted authentication check, one that blocked real users while letting anyone else straight in. It exposed records for over 18,000 people.&lt;/p&gt;

&lt;p&gt;A separate app, Moltbook, was breached three days after launch. A misconfigured database with no row-level security exposed 1.5 million API tokens and 35,000 email addresses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You Don’t Need to Learn to Code for This&lt;/strong&gt;&lt;br&gt;
Here’s the part that surprises people, and it’s worth saying plainly because it cuts against the usual advice. You don’t need to become a developer to catch any of the seven findings above.&lt;/p&gt;

&lt;p&gt;Don’t go buy a computer science course. Don’t assume the fix is “learn to read code properly.” That’s the expensive, trendy answer, and it’s not the one that actually closes the gap.&lt;/p&gt;

&lt;p&gt;What closes the gap is knowing what to ask your AI tool for, and knowing what “correct” looks like on a screen. If you’ve ever triaged a ticket, reviewed an ACL, or sat through a CAB meeting, you already have the instinct. You just haven’t pointed it at your own app yet.&lt;/p&gt;

&lt;p&gt;Seven problems, same shape, every time — which means catching them — -isn’t a mystery. It’s a checklist you run once and reuse forever.&lt;/p&gt;

&lt;p&gt;If that clicked, that checklist is the whole spine of the handbook I built around it. Seven core findings, plain-English checks, and a prompt for each one so you’re never stuck reading a diff to feel confident shipping. Worth a look if you want the full system instead of just the map.&lt;br&gt;
Find it here “&lt;a href="https://vibeshop.lemonsqueezy.com/checkout/buy/7c788692-3dca-4013-9e21-17fd8218d74e?checkout[discount_code]=UXMZI2NA" rel="noopener noreferrer"&gt;The Vibe Coders Security Handbook&lt;/a&gt;”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Rule of Thumb&lt;/strong&gt;&lt;br&gt;
If nobody’s specifically asked “is this safe,” assume the answer is no.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>security</category>
    </item>
  </channel>
</rss>
