Blog of Anant Shrivastava<p><strong>Making Security Tools Accessible: Why I Chose the Browser</strong></p><p>I’ve said it before, and I’ll likely say it again until someone turns it into merch: <em>we keep bringing bazookas to wrestling matches.</em> Security tooling today is often overcomplicated, infrastructure-heavy, and assumes a technical baseline that leaves many potential users out of the equation. My goal isn’t to build shiny things for the elite few : it’s to make useful tooling accessible to people beyond the traditional developer crowd. And if that means writing JavaScript in the browser, so be it.</p><p><strong>The Security Mindset Behind My Tools</strong></p><p>The decision to build tools like <strong><a href="https://cyfinoid.github.io/sbomplay/" rel="nofollow noopener" target="_blank">SBOMPlay</a></strong> and <strong><a href="https://cyfinoid.github.io/3ptracer/" rel="nofollow noopener" target="_blank">3P-Tracer</a></strong> is grounded in simple, security-conscious principles:</p><ol><li><strong>We will not store user data.</strong> If I never collect it, I don’t have to protect it.</li><li><strong>No API keys are ever stored persistently-even client side.</strong> You paste them if needed. That’s it.</li><li><strong>No CORS proxying.</strong> Yes, it can be bypassed-but that puts someone else in the data path. That’s not acceptable.</li><li><strong>All requests are routed through your own browser.</strong> There’s no shared backend quota. If you hit your daily limit, the tool still works for everyone else. And if you’re hitting that limit daily, you’ve got bigger fish to fry.</li><li><strong>I host these tools on GitHub Pages, not under my company or personal subdomain.</strong> No advance analytics. No logging. No data siphoning. You can verify the source, download the zip, and run it locally.</li></ol><p>These decisions weren’t made because it was trendy-they were made to <a href="https://reducetheattacksurface.com" rel="nofollow noopener" target="_blank">reduce attack surface</a> and respect users.</p><p><strong>Why the Browser?</strong></p><p>Let’s be clear: I didn’t start building browser tools because I love JavaScript. I’ve long maintained that most of my sites shouldn’t need it at all. But if I want tooling that works <em>without setup, installations, or assumptions</em>, then the browser is the only interface nearly everyone has.</p><ul><li><strong>CMD fear is real.</strong> Not everyone wants to run <code>curl</code> or <code>jq</code>.</li><li><strong>Browser doesn’t judge.</strong> You double-click <code>index.html</code> and it works.</li><li><strong>JavaScript may be obnoxious-but it’s available.</strong></li></ul><p>In this specific case accessibility mattered more than stack purity.</p><p><strong>Real Examples: SBOMPlay and 3ptracer</strong></p><p>With <strong><a href="https://cyfinoid.github.io/sbomplay/" rel="nofollow noopener" target="_blank">SBOMPlay</a></strong>, I wanted to give people a way to browse SBOMs locally without uploading anything. The entire app runs client-side, and LocalStorage handles up to 2,500 Google repository SBOMs.</p><p><a href="https://cyfinoid.github.io/3ptracer" rel="nofollow noopener" target="_blank">3P-Tracer</a>, explores another idea: what if DNS, traditionally a command-line-only world, could be explored via browser using DNS over HTTPS (DoH)? Turns out-it can. And it works surprisingly well.</p><p>These tools aren’t hacks or experiments. They’re designed to show what’s possible with just a browser, some vanilla JS, and a mindset focused on doing more with less.</p><p><strong>What Works Surprisingly Well</strong></p><ul><li><strong>LocalStorage</strong> isn’t huge (5MB), but it’s enough if you’re smart about it.</li><li><strong>DoH makes DNS an API.</strong> Suddenly, browser JS can do things we thought needed dig or nslookup.</li><li><strong>Zero setup</strong>: no Docker, no Node, no dependency mess.</li><li><strong>UI can change freely</strong> without disrupting logic or function.</li></ul><p><strong>What Still Sucks (And Always Will)</strong></p><ul><li><strong>CORS is brutal.</strong> It blocks half the ideas before they start.</li><li><strong>Rate limiting exists.</strong> Fair, but still annoying.</li><li><strong>Firefox isolates localhost tabs.</strong> Broke a few things in SBOMPlay in downloaded mode. <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage#:~:text=In%20all%20current,it%20over%20time." rel="nofollow noopener" target="_blank">More Here</a></li><li><strong>IndexedDB is a future headache.</strong> LocalStorage is fine for now, but someday I’ll need to bite that bullet.</li></ul><p><strong>This is the Baseline : Ask for More</strong></p><p>Let’s be blunt. Many commercial products are just wrappers around public APIs. They charge you for a nicer UI and a login wall. My tools are here to set a baseline: <em>this is what’s already free</em>. If a vendor can’t clearly explain what value they add on top of that, they don’t deserve your money.</p><p>You don’t need my website. You can download the repo, unzip it, and double-click <code>index.html</code>. If you want to self-host it, be my guest. These projects aren’t one-shot experiments – they’re evolving tools, and I fully intend to keep enhancing their capabilities over time. And if you need something more robust-that’s when commercial or bespoke solutions start to make sense.</p><p><strong>Minimalism is the Only Defense</strong></p><p>This design philosophy ties into something I wrote earlier: <a href="https://blog.anantshri.info/a-rational-survival-guide-to-vibe-coding-with-ai/#:~:text=2.%20Minimalism%20is%20Your%20Only%20Defense" rel="nofollow noopener" target="_blank">Minimalism is your only defense</a>. The less you store, the less you expose. The simpler your deployment, the <a href="https://reducetheattacksurface.com/" rel="nofollow noopener" target="_blank">fewer your attack surfaces</a>. And when you build in the browser, client-side only, you inherit a bunch of guardrails for free.</p><p><strong>Closing Thoughts</strong></p><p>These tools aren’t replacements for terminal power-users. They’re <strong>on-ramps</strong>. They’re for people who want quick insight, not CLI acrobatics. For folks who are tired of setting up Docker to read a JSON file.</p><blockquote><p>“You don’t always need the bazooka. Sometimes, all it takes is a well-sharpened pocket knife.”</p></blockquote><p>And honestly? The browser makes for a pretty decent sheath.</p> <p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://blog.anantshri.info/tag/browser/" target="_blank">#browser</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://blog.anantshri.info/tag/tool/" target="_blank">#tool</a></p>