Research · 2026-10-30

The website security basics worth fixing.

On 2026-10-30, 56% (108/193) of the websites where we could read the home page had no enforced Content-Security-Policy header. That leaves a useful browser defence unset. It does not prove a script injection flaw exists.

We found no recognised framing protection on 46% (89/193) of readable home pages on 2026-10-30. Review which pages should be allowed inside another site before setting a policy.

DMARC was absent or not enforcing quarantine or rejection for 45% (87/193) of domains with a completed DNS check on 2026-10-30. Monitoring is a sensible starting point. It needs a planned move to enforcement.

Read the method and results
Method and scope

A public view, with clear limits.

On 2026-10-30, we ran a local Python port of our passive website checker against 207 India-connected fintech, B2B SaaS and AI product websites. It reads public pages, a bounded set of known file paths and DNS records, and performs TLS handshakes. Requests identify our checker and link to the free check. We do not log in, submit forms or try exploits. We respect our exclusion list and stop at a home-page firewall challenge. Owners can opt out under our scanning policy.

The final eligible sample is 93 below the planned 300 websites. We removed out-of-scope candidates during source review. This is a public-directory convenience sample, not a market estimate. India connections come from directory locations and India-focused investor portfolios, including cross-border businesses. We did not independently verify legal domicile. Source headcounts were in the preferred range of 20 to 500 for 45 selected websites; headcount was unverified for 162. These are counts as at 2026-10-30. Fintech takes priority when sectors overlap, followed by explicit AI products, then B2B software.

We obtained readable sites for 193 of 207 selected websites on 2026-10-30. The results below use measured observations only. Blocked, timed-out and inapplicable checks appear separately. A missing header does not establish an exploitable vulnerability, and a passing check does not establish that an application is secure.

Inspect the anonymous aggregate data and calculation notes. Per-domain results stay private. Rates are rounded to whole percentages after pooling counts.

The configuration gaps · 2026-10-30

Start with the defences a browser can use.

Each label shows the affected count and measured sample size for 2026-10-30. The bars compare observed rates, not the severity of a vulnerability.

Observed configuration gapsNo enforced CSP: 56% (108/193), 2026-10-30; No framing protection: 46% (89/193), 2026-10-30; No HSTS: 27% (53/193), 2026-10-30; DMARC absent or monitoring: 45% (87/193), 2026-10-30. Percentages use measured sites for each check.No enforced CSP56% (108/193)No framing protection46% (89/193)No HSTS27% (53/193)DMARC absent or monitoring45% (87/193)
By segment

Read the sample before comparing grades.

Segment results, 2026-10-30. Grade rates use the readable n in each row. Scores are out of 100.
SegmentSelectedReadable nUngradedMedian scoreABCDEF
Overall20719314768% (15/193)46% (89/193)36% (69/193)8% (16/193)0% (0/193)2% (4/193)
Fintech66615758% (5/61)43% (26/61)33% (20/61)10% (6/61)0% (0/61)7% (4/61)
B2B SaaS4238479.08% (3/38)53% (20/38)34% (13/38)5% (2/38)0% (0/38)0% (0/38)
AI9994576.07% (7/94)46% (43/94)38% (36/94)9% (8/94)0% (0/94)0% (0/94)

The checker has no E band. Research grades normalise measured weights before blending the basic and deeper checks. They are not directly comparable with grades from the live checker, which handles skipped checks differently. Segment differences may reflect size, hosting or sample selection; they do not establish that a sector is safer.

Every check

What passed, what needs review.

Overall, 2026-10-30. 193 readable sites. Percentages use each row's measured n.
CheckMeasured nPassWarnFailUnknown / n/a
HTTPS works19398% (190)0% (0)2% (3)0
Plain HTTP redirects to HTTPS18898% (184)0% (0)2% (4)5
Browsers are told to always use HTTPS (HSTS)19371% (137)2% (3)27% (53)0
Certificate is valid and not about to expire19398% (190)0% (0)2% (3)0
Content-Security-Policy header review19333% (64)13% (26)53% (103)0
Recognised framing protection19354% (104)0% (0)46% (89)0
X-Content-Type-Options: nosniff19346% (89)0% (0)54% (104)0
Referrer-Policy header review19335% (67)65% (126)0% (0)0
Permissions-Policy header present19318% (35)82% (158)0% (0)0
SPF says who may send email as you18889% (168)1% (1)10% (19)5
DMARC tells receivers to block fake emails19355% (106)36% (69)9% (18)0
Source code history is not public10899% (107)0% (0)1% (1)85
Secrets file (.env) is not public106100% (106)0% (0)0% (0)87
Software versions are not advertised19364% (123)36% (70)0% (0)0
Home-page cookie Secure and HttpOnly flags19392% (177)2% (3)7% (13)0
Security contact is published1856% (11)94% (174)0% (0)8
Only modern TLS versions are accepted19088% (168)2% (3)10% (19)3
Strong cipher negotiated193100% (193)0% (0)0% (0)0
Certificate uses a modern signature193100% (193)0% (0)0% (0)0
Review of non-production-like DNS names982% (2)98% (96)0% (0)95
Known admin and sensitive-file path probes5273% (38)15% (8)12% (6)141
Software versions are not advertised on the page19374% (143)26% (50)0% (0)0
CMS user directory access1560% (9)0% (0)40% (6)178
Home-page cross-origin access headers19381% (157)19% (36)0% (0)0
Home-page cookie SameSite attributes19396% (185)4% (8)0% (0)0

Unknown / n/a includes blocked probes, timeouts and checks that do not apply. A software-identifying header is reported separately from an exact version. Cookie checks describe the public home page. A subdomain name that suggests testing or administration is a reason to review ownership, not proof of a security flaw.

Fintech check breakdown
Fintech, 2026-10-30. 61 readable sites. Percentages use each row's measured n.
CheckMeasured nPassWarnFailUnknown / n/a
HTTPS works6195% (58)0% (0)5% (3)0
Plain HTTP redirects to HTTPS5997% (57)0% (0)3% (2)2
Browsers are told to always use HTTPS (HSTS)6156% (34)2% (1)43% (26)0
Certificate is valid and not about to expire6195% (58)0% (0)5% (3)0
Content-Security-Policy header review6134% (21)15% (9)51% (31)0
Recognised framing protection6157% (35)0% (0)43% (26)0
X-Content-Type-Options: nosniff6152% (32)0% (0)48% (29)0
Referrer-Policy header review6134% (21)66% (40)0% (0)0
Permissions-Policy header present6113% (8)87% (53)0% (0)0
SPF says who may send email as you6090% (54)0% (0)10% (6)1
DMARC tells receivers to block fake emails6149% (30)38% (23)13% (8)0
Source code history is not public3597% (34)0% (0)3% (1)26
Secrets file (.env) is not public33100% (33)0% (0)0% (0)28
Software versions are not advertised6152% (32)48% (29)0% (0)0
Home-page cookie Secure and HttpOnly flags6197% (59)0% (0)3% (2)0
Security contact is published582% (1)98% (57)0% (0)3
Only modern TLS versions are accepted6085% (51)5% (3)10% (6)1
Strong cipher negotiated61100% (61)0% (0)0% (0)0
Certificate uses a modern signature61100% (61)0% (0)0% (0)0
Review of non-production-like DNS names390% (0)100% (39)0% (0)22
Known admin and sensitive-file path probes2176% (16)14% (3)10% (2)40
Software versions are not advertised on the page6161% (37)39% (24)0% (0)0
CMS user directory access367% (2)0% (0)33% (1)58
Home-page cross-origin access headers6192% (56)8% (5)0% (0)0
Home-page cookie SameSite attributes6193% (57)7% (4)0% (0)0
B2B SaaS check breakdown
B2B SaaS, 2026-10-30. 38 readable sites. Percentages use each row's measured n.
CheckMeasured nPassWarnFailUnknown / n/a
HTTPS works38100% (38)0% (0)0% (0)0
Plain HTTP redirects to HTTPS3895% (36)0% (0)5% (2)0
Browsers are told to always use HTTPS (HSTS)3887% (33)0% (0)13% (5)0
Certificate is valid and not about to expire38100% (38)0% (0)0% (0)0
Content-Security-Policy header review3832% (12)13% (5)55% (21)0
Recognised framing protection3861% (23)0% (0)39% (15)0
X-Content-Type-Options: nosniff3847% (18)0% (0)53% (20)0
Referrer-Policy header review3842% (16)58% (22)0% (0)0
Permissions-Policy header present3826% (10)74% (28)0% (0)0
SPF says who may send email as you3792% (34)0% (0)8% (3)1
DMARC tells receivers to block fake emails3861% (23)34% (13)5% (2)0
Source code history is not public20100% (20)0% (0)0% (0)18
Secrets file (.env) is not public20100% (20)0% (0)0% (0)18
Software versions are not advertised3874% (28)26% (10)0% (0)0
Home-page cookie Secure and HttpOnly flags3889% (34)5% (2)5% (2)0
Security contact is published3711% (4)89% (33)0% (0)1
Only modern TLS versions are accepted3887% (33)0% (0)13% (5)0
Strong cipher negotiated38100% (38)0% (0)0% (0)0
Certificate uses a modern signature38100% (38)0% (0)0% (0)0
Review of non-production-like DNS names150% (0)100% (15)0% (0)23
Known admin and sensitive-file path probes850% (4)25% (2)25% (2)30
Software versions are not advertised on the page3882% (31)18% (7)0% (0)0
CMS user directory access580% (4)0% (0)20% (1)33
Home-page cross-origin access headers3871% (27)29% (11)0% (0)0
Home-page cookie SameSite attributes3897% (37)3% (1)0% (0)0
AI products check breakdown
AI products, 2026-10-30. 94 readable sites. Percentages use each row's measured n.
CheckMeasured nPassWarnFailUnknown / n/a
HTTPS works94100% (94)0% (0)0% (0)0
Plain HTTP redirects to HTTPS91100% (91)0% (0)0% (0)3
Browsers are told to always use HTTPS (HSTS)9474% (70)2% (2)23% (22)0
Certificate is valid and not about to expire94100% (94)0% (0)0% (0)0
Content-Security-Policy header review9433% (31)13% (12)54% (51)0
Recognised framing protection9449% (46)0% (0)51% (48)0
X-Content-Type-Options: nosniff9441% (39)0% (0)59% (55)0
Referrer-Policy header review9432% (30)68% (64)0% (0)0
Permissions-Policy header present9418% (17)82% (77)0% (0)0
SPF says who may send email as you9188% (80)1% (1)11% (10)3
DMARC tells receivers to block fake emails9456% (53)35% (33)9% (8)0
Source code history is not public53100% (53)0% (0)0% (0)41
Secrets file (.env) is not public53100% (53)0% (0)0% (0)41
Software versions are not advertised9467% (63)33% (31)0% (0)0
Home-page cookie Secure and HttpOnly flags9489% (84)1% (1)10% (9)0
Security contact is published907% (6)93% (84)0% (0)4
Only modern TLS versions are accepted9291% (84)0% (0)9% (8)2
Strong cipher negotiated94100% (94)0% (0)0% (0)0
Certificate uses a modern signature94100% (94)0% (0)0% (0)0
Review of non-production-like DNS names445% (2)95% (42)0% (0)50
Known admin and sensitive-file path probes2378% (18)13% (3)9% (2)71
Software versions are not advertised on the page9480% (75)20% (19)0% (0)0
CMS user directory access743% (3)0% (0)57% (4)87
Home-page cross-origin access headers9479% (74)21% (20)0% (0)0
Home-page cookie SameSite attributes9497% (91)3% (3)0% (0)0
Exact definitions

The headline rates and their denominators.

Overall headline measures, 2026-10-30. Readable-site population n=193.
ObservationRate (affected / measured)Unknown / n/a
No valid DMARC policy found9% (18/193)0
DMARC absent or not enforcing quarantine/reject45% (87/193)0
SPF missing, invalid, soft, neutral or permissive80% (150/188)5
No enforced Content-Security-Policy header56% (108/193)0
No positive HSTS max-age27% (53/193)0
No recognised framing protection46% (89/193)0
Public .env signature confirmed0% (0/106)87
Public .git/HEAD signature confirmed1% (1/108)85
Sensitive file content confirmed in path probes12% (6/52)141
Public .env, .git or sensitive file content confirmed15% (6/40)153
Server version or software-identifying header visible36% (70/193)0
Exact software version visible in page or headers26% (50/193)0
security.txt with a Contact line found6% (11/185)8
TLS 1.0 or 1.1 handshake accepted10% (19/190)3
Home page sets a cookie without Secure7% (13/193)0
Home page sets a cookie without HttpOnly8% (15/193)0
Home page sets a cookie without Secure or HttpOnly8% (16/193)0
Cookie-setting home pages missing Secure or HttpOnly25% (16/64)129
At least one observed fail82% (159/193)0

SPF missing or soft includes invalid, neutral and permissive records. DMARC absent is distinct from monitoring mode. The combined file-exposure measure is known positive when any signature is confirmed; a negative requires completed probes for all components. Lower coverage can bias that rate. security.txt presence means a Contact line was found; it does not validate the contact or expiry. TLS support needs a successful handshake. An ambiguous failure is unknown. No rate describes actual email delivery, authenticated cookies or an exhaustive inventory.

Coverage

What we could not grade.

Ungraded websites, 2026-10-30. Selected overall n=207.
SegmentReasonWebsites
Overallaccess denied3
Overalldns or offline6
Overallfirewall challenge5
fintechaccess denied2
fintechdns or offline2
fintechfirewall challenge1
saasdns or offline1
saasfirewall challenge3
aiaccess denied1
aidns or offline3
aifirewall challenge1

Firewall challenges are not a fault on the site. We did not retry them or include their block pages in the grade. These exclusions can change the mix of sites that remain, so the results should not be generalised to all Indian businesses.

What to fix first

Make the next change small and verifiable.

  1. Keep source history private

    Block access to /.git on the web server (or deploy without it) today, then change any secrets that were in the code.

  2. Remove confirmed public sensitive files

    Remove these files from the web folder or block them on the server. Backups and logs belong outside the site entirely.

  3. Retire legacy TLS protocols

    Disable TLS 1.0 and 1.1 on the web server or load balancer, keeping TLS 1.2 and 1.3.

  4. Move mail authentication towards enforcement

    After checking the reports, move to p=quarantine and then p=reject.

  5. Introduce an enforced script policy

    Start with Content-Security-Policy: default-src 'self' and add the sources your site really uses.

  6. Choose who may frame your pages

    Add X-Frame-Options: DENY (or frame-ancestors 'none' in your CSP).

  7. Keep browsers on HTTPS

    Add the header Strict-Transport-Security: max-age=31536000; includeSubDomains

  8. Review the cookies that need protection

    Set Secure on every cookie (and HttpOnly and SameSite where scripts don’t need them).

These fixes come from the checker. Test policies against the sources, embeds, subdomains and email senders your service needs before enabling them widely. Verify the change at the response or DNS record after release.

Your next step

Check your own starting point.

Use the free website check to see the public configuration of a site you own or have permission to test. When you need to test roles, APIs and transaction flows, our fintech VAPT service covers the application behind the front page.

Get secured.

Tell us what you're shipping. You'll get a scoped, fixed quote within one business day.