<?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: Alex Simakov</title>
    <description>The latest articles on DEV Community by Alex Simakov (@alex_simakov_d5176f3977ad).</description>
    <link>https://dev.to/alex_simakov_d5176f3977ad</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%2F4231686%2F86128ff9-18d2-465c-bb48-ff9377f0fa05.png</url>
      <title>DEV Community: Alex Simakov</title>
      <link>https://dev.to/alex_simakov_d5176f3977ad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alex_simakov_d5176f3977ad"/>
    <language>en</language>
    <item>
      <title>We checked 1,000 DeFi websites: 76% have no CSP and 64% can be framed by another site</title>
      <dc:creator>Alex Simakov</dc:creator>
      <pubDate>Sat, 07 Nov 2026 07:49:47 +0000</pubDate>
      <link>https://dev.to/alex_simakov_d5176f3977ad/we-checked-1000-defi-websites-76-have-no-csp-and-64-can-be-framed-by-another-site-5m5</link>
      <guid>https://dev.to/alex_simakov_d5176f3977ad/we-checked-1000-defi-websites-76-have-no-csp-and-64-can-be-framed-by-another-site-5m5</guid>
      <description>&lt;p&gt;&lt;em&gt;A passive look at the front door of DeFi. There were no attacks; we only looked at what every visitor's browser receives.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Smart contracts get audited. The website in front of them usually does not. Yet some of the most painful losses did not touch a contract at all. In BadgerDAO (December 2021, about $120M), a script injected into the front end asked users for token approvals. In the Ledger Connect Kit incident (December 2023), a poisoned version of a widely used front-end library turned dApps into wallet drainers.&lt;/p&gt;

&lt;p&gt;So we looked at the websites of DeFi protocols listed on DefiLlama.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;We took every protocol listed on DefiLlama with a website, which is about 4,000 domains, and picked 1,000 at random.&lt;/li&gt;
&lt;li&gt;We loaded only the home page, once, like a normal visitor. We did not log in, connect a wallet, probe hidden files or submit forms.&lt;/li&gt;
&lt;li&gt;We checked response headers, cookie flags, HTTPS, third-party scripts and broken links on the home page.&lt;/li&gt;
&lt;li&gt;We publish no project names, only aggregated numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;896 sites answered. Another 39 blocked automated checks and 65 did not answer; the shares below are of the 896.&lt;/p&gt;

&lt;p&gt;An honest limit: we looked at home pages. On many projects that is a marketing page and the app with the wallet button lives on another address, so a number here is a signal to check, not proof that a project's users are at risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Findings
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;Share of sites&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No Content-Security-Policy&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can be framed by another site (clickjacking)&lt;/td&gt;
&lt;td&gt;64%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No HSTS&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Third-party scripts without Subresource Integrity&lt;/td&gt;
&lt;td&gt;27%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cookies without Secure/HttpOnly&lt;/td&gt;
&lt;td&gt;6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Broken links on the home page&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why these matter more for DeFi than for a blog
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scripts without SRI.&lt;/strong&gt; These scripts come from analytics, chat widgets and CDN-hosted libraries. If any of those vendors is compromised, the attacker's code runs on your page, right next to your "Connect wallet" button. SRI makes the browser refuse a script whose content has changed. It cannot be used on scripts whose content changes by design, such as most analytics tags; CSP is the protection for those.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clickjacking.&lt;/strong&gt; A dApp that can be loaded in an invisible frame lets an attacker line up your "Approve" button under their "Claim reward" button. On most sites this is a nuisance. On a site that triggers wallet signatures, it is a theft vector.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No CSP.&lt;/strong&gt; A CSP is the second line of defence when an injected script does get in: it limits where scripts can load from and where data can be sent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For comparison, we ran the same check on 1,000 ordinary websites, of which 571 answered. DeFi sites do better on HSTS (35% missing vs 61%), cookies (6% vs 26%) and third-party scripts without SRI (27% vs 64%). On the two protections that matter most for a site that asks for wallet signatures they are no better: framing (64% vs 58%) and CSP (76% vs 79%).&lt;/p&gt;

&lt;h2&gt;
  
  
  The good news
&lt;/h2&gt;

&lt;p&gt;The fixes are configuration, not code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Content-Security-Policy&lt;/code&gt; with an explicit script allow-list and &lt;code&gt;frame-ancestors 'none'&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;integrity=&lt;/code&gt; on every third-party &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;, or self-hosting;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Strict-Transport-Security&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A team can ship all three in an afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check your own front end
&lt;/h2&gt;

&lt;p&gt;We built a free passive check. It looks for exactly these issues and gives you the top 3 with a fix: &lt;a href="https://mcp.pasportoo.com/check?utm_source=devto" rel="noopener noreferrer"&gt;https://mcp.pasportoo.com/check?utm_source=devto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full audit covers the main user journey on desktop and mobile, bugs and passive security first, and a human reviews every finding before delivery: &lt;a href="https://mcp.pasportoo.com/services/website-ux-audit?utm_source=devto" rel="noopener noreferrer"&gt;https://mcp.pasportoo.com/services/website-ux-audit?utm_source=devto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you run a project and found something serious with our check, we are happy to explain the finding. Ask us at &lt;a href="mailto:work@pasportoo.com"&gt;work@pasportoo.com&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Method: DefiLlama protocol list (November 2026), random sample of 1,000 websites, one home-page load each plus up to 10 same-site links, November 2026. No per-project data is published.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
