{% extends "base.html" %} {% import "tool_parts.html" as p %} {% block title %}{% if result %}{{ result.grade }} security grade for {{ url }}{% else %}Free website security check{% endif %}{% endblock %} {% block desc %}{{ tool.desc }}{% endblock %} {% block content %} {{ p.head(tool) }} {{ p.form(tool, input_value, 'example.com') }} {{ p.error(error, url) }} {% if result %} {% call p.verdict(result.grade, result.grade[0], 'Security grade ' ~ result.grade, result.score ~ '/100 · ' ~ result.findings|length ~ ' finding' ~ ('' if result.findings|length == 1 else 's') ~ (' · server: ' ~ result.server if result.server else ''), result.final_url, checked_at) %}
{% for sev, n in result.counts.items() if n %}{{ n }} {{ sev }}{% endfor %}
{% endcall %}

Security headers

{% for h in result.header_rows %} {% endfor %}
{{ '✓' if h.ok else '✕' }} {{ h.name }}{% if not h.ok %}
{{ h.title }}
{% endif %}
{{ 'present' if h.ok else 'missing' }}

TLS protocol support

{% for k, v in result.tls.items() %}{{ k }} · {{ 'enabled' if v else ('disabled' if v is false else 'unknown') }}{% else %}Not an https site, TLS was not tested.{% endfor %}

TLS 1.0 and 1.1 should be off; TLS 1.2 and 1.3 on.

Findings and how to fix them ({{ result.findings|length }})

{{ p.findings(result.findings, 'No findings. This site passes every check we run.') }}
{{ p.share(share_url) }} {{ p.others(tools, tool, url) }} {% else %}

What we check

Strict-Transport-Security, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, cookie Secure / HttpOnly / SameSite flags, TLS 1.0 – 1.3 support and version-leaking headers.

How it's graded

Start at 100. High findings cost 25 points, medium 12, low 5. 95+ is A+, 85+ A, 70+ B, 55+ C, 40+ D, below that F.

Try it on

puzaricloud.in · github.com · example.com

{% endif %} {{ p.cta(tool, url) }} {% endblock %}