<?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: Mohammad NaVeEd</title>
    <description>The latest articles on DEV Community by Mohammad NaVeEd (@mohammad_naveed_d0b970477).</description>
    <link>https://dev.to/mohammad_naveed_d0b970477</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%2F3962596%2F22220eb7-227a-47a3-a392-37add87a0571.jpg</url>
      <title>DEV Community: Mohammad NaVeEd</title>
      <link>https://dev.to/mohammad_naveed_d0b970477</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mohammad_naveed_d0b970477"/>
    <language>en</language>
    <item>
      <title>I built a browser-based fuzzer and here's how I solved the CORS problem</title>
      <dc:creator>Mohammad NaVeEd</dc:creator>
      <pubDate>Sat, 22 Aug 2026 15:28:48 +0000</pubDate>
      <link>https://dev.to/mohammad_naveed_d0b970477/i-built-a-browser-based-fuzzer-and-heres-how-i-solved-the-cors-problem-47kh</link>
      <guid>https://dev.to/mohammad_naveed_d0b970477/i-built-a-browser-based-fuzzer-and-heres-how-i-solved-the-cors-problem-47kh</guid>
      <description>&lt;p&gt;Web fuzzing tools have always lived in the terminal. I wanted to change that, so I built FFUF — a browser-based fuzzer that actually works on external targets.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CORS wall
&lt;/h2&gt;

&lt;p&gt;The first problem with any browser-based security tool is CORS. If you try to fetch() an external URL from browser JavaScript, you can send the request but you can't read the response. The browser blocks it. For a fuzzer, this is fatal — you need to see status codes.&lt;/p&gt;

&lt;p&gt;The fix is a server-side proxy. Instead of the browser calling the target directly, it calls your own API endpoint, which makes the real HTTP request server-side and returns the full result.&lt;/p&gt;

&lt;p&gt;In Next.js this is a single API route:&lt;/p&gt;

&lt;p&gt;Browser → POST /api/proxy → Target server → real response → Browser&lt;/p&gt;

&lt;p&gt;The proxy captures status, headers, body size, redirect location, content type, and response time. The browser never touches the target directly.&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%2F4j96hzvkary2u94rzr4l.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%2F4j96hzvkary2u94rzr4l.png" alt=" " width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The fuzzing engine
&lt;/h2&gt;

&lt;p&gt;The core loop is simple. Build a wordlist. For each entry, replace FUZZ in the URL or request body with that entry, call the proxy, get the real response, apply filters, show results.&lt;/p&gt;

&lt;p&gt;The tricky part was React state batching. When you run 3 concurrent requests per burst, they all try to call setResults() at the same time. React batches these and you lose results. The fix is collecting each burst's results into a local array and doing a single state update after the burst completes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;Four fuzzing modes — directory discovery, IDOR number range testing, POST body fuzzing, and brute force. A 2,800+ path built-in wordlist. Real-time streaming results with status-based filtering. CSV export.&lt;/p&gt;

&lt;p&gt;Live at &lt;a href="https://ffuf.codewithneo.com" rel="noopener noreferrer"&gt;ffuf.codewithneo.com&lt;/a&gt;. Would love feedback from other devs, especially on the proxy architecture.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A free, 100% browser-based cURL tool that runs entirely in your client</title>
      <dc:creator>Mohammad NaVeEd</dc:creator>
      <pubDate>Mon, 01 Jun 2026 11:10:37 +0000</pubDate>
      <link>https://dev.to/mohammad_naveed_d0b970477/a-free-100-browser-based-curl-tool-that-runs-entirely-in-your-client-25b8</link>
      <guid>https://dev.to/mohammad_naveed_d0b970477/a-free-100-browser-based-curl-tool-that-runs-entirely-in-your-client-25b8</guid>
      <description>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;I built curl.codewithneo.com because I was tired of switching back and forth between my terminal and the browser just to test quick API requests, format payloads, or debug headers.&lt;/p&gt;

&lt;p&gt;While there are plenty of web-based HTTP clients out there, a lot of them send your data through their own backend servers. As a developer/security researcher, sending API keys, bearer tokens, or sensitive payloads through a third-party server always felt like a massive security risk.&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.amazonaws.com%2Fuploads%2Farticles%2F6rer0ce83ooz0724j7jw.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.amazonaws.com%2Fuploads%2Farticles%2F6rer0ce83ooz0724j7jw.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I built a completely client-side alternative.&lt;/p&gt;

&lt;p&gt;Key Features&lt;br&gt;
100% Browser-Based: All requests are executed directly from your browser. Your sensitive API keys, tokens, and endpoints never touch an external backend server.&lt;/p&gt;

&lt;p&gt;Completely Free: No paywalls, no "premium tiers" for basic HTTP methods, and no sign-ups required.&lt;/p&gt;

&lt;p&gt;Clean UI: Fast, lightweight, and built to let you drop in a cURL command or construct a request in seconds.&lt;/p&gt;

&lt;p&gt;Why use this over a local terminal?&lt;br&gt;
Sometimes you just want a clean visual interface to inspect response headers, pretty-print massive JSON payloads, or quickly tweak a request without messing up your terminal history.&lt;/p&gt;

&lt;p&gt;I’d love to get your feedback on it. What features should I add next? If you encounter any CORS issues or have ideas for improvements, let me know!&lt;/p&gt;

&lt;p&gt;Check it out here: &lt;a href="https://curl.codewithneo.com" rel="noopener noreferrer"&gt;ncurl&lt;/a&gt;&lt;/p&gt;

</description>
      <category>curl</category>
      <category>dev</category>
      <category>devtools</category>
      <category>browsercurl</category>
    </item>
  </channel>
</rss>
