---
---
<section class="py-24">
<div class="max-w-5xl mx-auto px-6">
<h2 class="font-heading text-noir-50 text-3xl sm:text-4xl mb-4">Cross-file taint analysis</h2>
<p class="text-noir-500 text-base mb-12">foxguard tracks untrusted input across files in Python, JavaScript, and Go, linking a source in one file to a sink in another in 0.03 seconds.</p>
<!-- Code example -->
<div class="grid md:grid-cols-2 gap-px bg-noir-800 rounded-xl overflow-hidden mb-8">
<div class="bg-noir-950 p-5">
<div class="text-noir-600 text-xs mb-3 font-mono">views.py</div>
<pre class="text-[13px] font-mono leading-relaxed"><code class="text-noir-400"><span class="text-purple-400">from</span> . <span class="text-purple-400">import</span> queries
<span class="text-purple-400">def</span> <span class="text-blue-400">search</span>(request):
name = <span class="text-amber-400">request.GET</span>["name"]
<span class="text-purple-400">return</span> queries.<span class="text-red-400">run_query</span>(name)</code></pre>
</div>
<div class="bg-noir-950 p-5">
<div class="text-noir-600 text-xs mb-3 font-mono">queries.py</div>
<pre class="text-[13px] font-mono leading-relaxed"><code class="text-noir-400"><span class="text-purple-400">def</span> <span class="text-blue-400">run_query</span>(name):
cur = db.cursor()
cur.<span class="text-red-400">execute</span>(
<span class="text-green-400">"SELECT * FROM users"</span>
<span class="text-green-400">" WHERE name = '"</span> + <span class="text-red-400">name</span> + <span class="text-green-400">"'"</span>
)</code></pre>
</div>
</div>
<!-- Flow -->
<div class="flex flex-wrap items-center gap-2 text-xs sm:text-sm font-mono text-noir-600 mb-16">
<span class="text-amber-400">request.GET</span>
<span>→</span>
<span>views.py</span>
<span>→</span>
<span>queries.py</span>
<span>→</span>
<span class="text-red-400">cursor.execute</span>
</div>
<!-- Features grid -->
<div class="grid sm:grid-cols-3 gap-8">
<div>
<h3 class="text-noir-100 text-sm font-medium mb-2">Dataflow traces</h3>
<p class="text-noir-500 text-sm leading-relaxed">
<code class="text-noir-400">--explain</code> prints the full source-to-sink path, file and line, plus a fix.
</p>
</div>
<div>
<h3 class="text-noir-100 text-sm font-medium mb-2">Confidence-scored</h3>
<p class="text-noir-500 text-sm leading-relaxed">
Findings are ranked by dataflow depth, so the most certain ones surface first.
</p>
</div>
<div>
<h3 class="text-noir-100 text-sm font-medium mb-2">Branch diffing</h3>
<p class="text-noir-500 text-sm leading-relaxed">
<code class="text-noir-400">foxguard diff main</code> shows only findings your branch introduces.
</p>
</div>
</div>
</div>
</section>