Skip to main content

Security report for chrishannah.me

Chris Hannah · Other · N/a

Medium risk. 9 critical or high findings in Email security, Security headers and 2 other checks.

Security score

59/100

Risk levelMedium

0–100, higher is better. How it is calculated

The website chrishannah.me is a personal blog and portfolio site maintained by Chris Hannah. It features a variety of content including essays, technical articles, photography, and personal updates. The site targets a general audience interested in technology, programming, and personal storytelling. The business model is primarily content publishing for personal branding and sharing knowledge. The site is small-scale and has been active since 2016, with consistent content updates and a clear personal identity. Technically, the site is well-structured with modern HTML5 and CSS3 standards, uses JavaScript libraries such as Highlight.js for code syntax highlighting, and Lightbox.js for image display. Hosting is via Vercel DNS, indicating a modern and performant infrastructure. The site is mobile-optimized and has good navigation clarity, although accessibility features are basic. SEO optimization is present but could be improved. From a security perspective, the site enforces HTTPS with good SSL configuration and has domain transfer protections enabled. However, it lacks DNSSEC and security headers such as Content Security Policy or HSTS. There are no published privacy or cookie policies, nor a security.txt or vulnerability disclosure page, which are areas for improvement. Analytics are minimal and privacy-respecting, using Tinylytics with no aggressive tracking. Overall, the site is trustworthy and professional for a personal blog but has gaps in privacy compliance and security best practices. Strategic recommendations include adding privacy and cookie policies, implementing security headers, enabling DNSSEC, and publishing a vulnerability disclosure policy to enhance trust and compliance.

Scanned

NIS2 and GDPR posture

GDPR outside view
35/ 100 · High
Checks completed
7of 7

NIS2 Art. 21(2)

  1. (a) Risk analysis and security policies: Not visible from outside
  2. (b) Incident handling: One indicator
  3. (c) Business continuity, backups and crisis management: Not visible from outside
  4. (d) Supply chain security: Not visible from outside
  5. (e) Secure acquisition, development and maintenance, including vulnerability handling: Partly checked
  6. (f) Assessing the effectiveness of security measures: Not visible from outside
  7. (g) Cyber hygiene and security training: Not visible from outside
  8. (h) Cryptography and encryption: Partly checked
  9. (i) HR security, access control and asset management: One indicator
  10. (j) Multi-factor authentication and secured communications: Not visible from outside

This scan rated NIS2 with an earlier keyword method that is no longer shown; rescan for the per-article view. Risk management, continuity, supply chain, training, MFA, management oversight (Art. 20) and incident reporting (Art. 23) need internal evidence, and Guard cannot tell whether NIS2 applies to this organisation.

GDPR is indicative only, based on publicly visible signals: Articles 7, 12, 13 and 32 of Regulation (EU) 2016/679 and Article 5(3) of the ePrivacy Directive. Not a certification or legal assessment.

Priority findings

9 findings rated critical or high. Fix these first.

  1. Email security

    SPF, DKIM and DMARC stop others sending email that looks like it comes from your domain, a common route to phishing and invoice fraud.

    • Critical

      No email authentication configured

      Domain is vulnerable to email spoofing

      What to do: Implement SPF, DKIM, and DMARC immediately

  2. Security headers

    Security headers are instructions your web server sends to every visitor’s browser. Missing ones leave visitors more exposed to attacks such as clickjacking and injected scripts.

    • High

      Missing X-Frame-Options header

      Prevents clickjacking attacks

      What to do: Add "X-Frame-Options: DENY" or "X-Frame-Options: SAMEORIGIN"

    • High

      Missing Content-Security-Policy header

      Controls resources the browser is allowed to load

      What to do: Implement a Content-Security-Policy appropriate for your application

      • ASVS V3.4.3
      • OWASP Secure Headers: OWASP Secure Headers Project recommends Content-Security-Policy: default-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none';…
  3. GDPR outside view

    These are the privacy signals visitors and data protection authorities look for under GDPR.

    • High

      No Privacy Policy found

      GDPR requires a clear and accessible privacy policy

      What to do: Add a comprehensive privacy policy page and link to it prominently

    • High

      No Cookie Policy found

      GDPR requires clear information about cookie usage

      What to do: Add a dedicated cookie policy explaining cookie usage and purposes

Need hands-on remediation? Email guard@offseq.com

Keep watching chrishannah.me

This scan found 26 issues across 6 checks. Monitoring re-runs those checks daily, emails you when something material changes and records each fix, so you can show progress.

Daily monitoring

Recommended

€25per month

  • TLS certificates and expiry
  • DNS records
  • SPF, DKIM and DMARC
  • Security headers
  • GDPR and NIS2 posture
  • Exposed services
  • Third-party trackers
  • Security score drift

Email alerts on material changes and an exportable JSON history of every change.

Billed monthly to your card. Cancel anytime. The full timeline opens with your unlock code.

Full report

€39.90one-time

  • The complete analysis as a PDF you can cite
  • Email delivery with an unlock code
  • Lifetime access to this report

Prices incl. 21% VAT. Secure checkout by Mollie; sold by SEQ SIA, Latvia.

Results by check

Each check with its score, findings and the evidence it collected.

How this score is calculated

The security score runs 0–100, higher is better. It is the plain average of the security checks that completed in this scan, each counted equally. A check that could not run is left out: it counts neither as a pass nor as a fail.

Counted in this score

SSL/TLS
72
Security headers
30
Email security
40
DNS health
75
Network security
100
GDPR outside view
35
Average
59

Not counted

  • NIS2 outside view: Re-weights evidence from the TLS, email, DNS, network and hygiene checks, so counting it would count that evidence twice. Shown on its own.
  • OffSeq Observations: An AI reading of the site, useful context but not reproducible evidence. Shown on its own.

Findings that cap the score at 49

Each of these is serious on its own, so while any is present the site cannot rate better than high risk, however good the other checks are.

  • The certificate is not trusted by browsers
  • The website is not served over HTTPS
  • A database, remote desktop, file-sharing or Telnet service is reachable from the internet
  • The page loads a script from a compromised source
  • The domain registration has expired
  • SPF authorises every server to send mail as the domain

Partial scans

When the site blocks Guard or most checks cannot run, the score covers only the checks that ran (usually DNS and email), is capped at 75 and is shown as partial, without a risk level.

Risk levels

  • Critical0–25
  • High26–49
  • Medium50–75
  • Low76–100

Technical appendix

Business context, site observations and technical notes gathered during the scan, and the standards behind each reference.

Business context

Business profile

Chris Hannah operates a personal blog focused on technology, programming, and personal essays. The site serves as a platform for sharing knowledge and personal experiences, targeting a general audience interested in tech and lifestyle content. The business model is content-driven without direct monetization evident. The site has a modest but consistent presence with social media integration on Mastodon, X (Twitter), and GitHub, supporting community engagement. There is no indication of partnerships or subsidiaries. Growth indicators include regular content updates and adoption of modern web technologies. The site’s ecosystem is self-contained with external links primarily to social and related personal projects.

Security posture

The website demonstrates a moderate security posture. HTTPS is enforced with a valid SSL certificate, and the domain has clientTransferProhibited status to prevent unauthorized transfers. However, DNSSEC is not enabled, which could improve DNS security. No security headers such as CSP, HSTS, or X-Frame-Options are detected, which are recommended to mitigate common web attacks. There is no evidence of a published security policy, incident response plan, or vulnerability disclosure mechanism. The site does not collect sensitive user data via forms, reducing exposure. Analytics usage is minimal and privacy-conscious. Overall, the site is secure for its purpose but would benefit from enhanced security headers and formal security documentation.

Recommendations

  1. Enable DNSSEC on the domain to improve DNS security and integrity.
  2. Publish a comprehensive privacy policy and cookie policy to comply with GDPR and other privacy regulations.
  3. Implement security headers such as Content Security Policy (CSP), HTTP Strict Transport Security (HSTS), and X-Frame-Options to enhance web security.
  4. Add a security.txt file or a dedicated vulnerability disclosure page to facilitate responsible security reporting.
  5. Consider adding cookie consent mechanisms to inform users and obtain consent for tracking.
Site observations

Automated reading of the public site. Ratings are indicative.

Business

Company
Chris Hannah
Description
Personal blog and portfolio site of Chris Hannah featuring essays, status updates, photography, and technical articles.
Key services
blog articles, technical essays, photography, personal updates
Content quality
good
Branding
consistent

Technology

Stack
HTML5, CSS3, JavaScript, Highlight.js, Lightbox.js, Tinylytics analytics
Platforms
Vercel DNS
Performance
fast
Mobile
good
Accessibility
basic
SEO
basic

Security

Observed score
75/100
Good practices seen
  • HTTPS enforced
  • clientTransferProhibited domain status

Analytics and tracking

Services
Tinylytics
Tracking level
minimal
Privacy practices
poor

Advertising

Tracking pixels
Tinylytics
Transparency
basic

Site quality

Design
good
User experience
good
Content relevance
good
Navigation
good
Professionalism
good
Trustworthiness
moderate

Key observations

  1. Website is a personal blog with regular content updates.
  2. No privacy or cookie policies found, which is a compliance gap.
  3. No security.txt or vulnerability disclosure page present.
  4. Uses HTTPS with good SSL configuration.
  5. No DNSSEC enabled on domain.
  6. No security headers detected in HTML content.
  7. Social media presence is linked and consistent.
  8. No forms detected on the main page; minimal data collection.
  9. Uses lightweight analytics with minimal tracking.
  10. Content is safe and suitable for general audiences.
Technical notes

Notes

The website is built with clean, modern HTML5 and CSS3, using JavaScript libraries like Highlight.js for code syntax highlighting and Lightbox.js for image display. It is hosted on Vercel, a reputable cloud platform, ensuring fast loading times and good performance. The site is mobile-optimized with responsive design and clear navigation. SEO is basic but present with meta tags and RSS feeds. No CMS is detected, indicating a static or custom-built site. There is no evidence of technical debt or deprecated technologies. The site could improve accessibility features and SEO further. Overall, the technical implementation is solid and suitable for a personal blog.
Standards and sources

Reference chips under each finding point to the standard, regulation or specification the finding relates to. They are taken from the official datasets below and mapped conservatively: a finding with no defensible link shows none. NIS2 and GDPR references mark where a finding is relevant evidence, not a compliance verdict. Implementing Regulation (EU) 2024/2690 binds digital infrastructure and digital service providers; for other entities it is the most detailed public reading of the Article 21 measures. WCAG, EN 301 549, European Accessibility Act and Web Accessibility Directive references name the requirement an automated accessibility rule relates to; they are not a conformance verdict.

Retrieved 2026-10-25

Reviews of this site

Share your experience with chrishannah.me. Every review is verified by email and published after moderation.

Overall rating
Select a rating
4000 characters remaining

We’ll email you to confirm your review and keep your details private.

Community rating

No published reviews yet. Be the first to review chrishannah.me.

Feedback on this report

Rate this report, add an optional comment, and tell us if you want a security specialist to follow up.

Overall report quality
Select a rating
2000 characters remaining

We only use your feedback to improve Guard reports. Contact details are never shared.