Rudra Analyzer

免费网站安全检查工具

检查您的网站如何保护访客:HTTPS 和 http→https 重定向、SSL/TLS 证书、安全标头的值、cookie 标记、CORS 和混合内容。这是一项被动、只读的配置检查,只发送普通的 GET 和 HEAD 请求 — 不是渗透测试。

输入一个页面,例如 https://yourwebsite.com 或 https://yourwebsite.com/pricing。

此工具检查什么

  • HTTPS 和重定向

    页面在重定向后是否最终使用 https://、途经的每一跳,以及 http://yourdomain/ 是否以永久(301 或 308)重定向跳转到 HTTPS。

  • SSL/TLS 证书

    证书是否受信任并与您的域名匹配、使用的 TLS 版本、颁发机构,以及距离过期还有多少天。

  • HSTS 的值

    会解析 Strict-Transport-Security 标头,而不只是检测它是否存在:max-age 至少 180 天、没有格式错误的指令、includeSubDomains,以及 preload 标记是否有预加载列表所需的设置作为支撑。

  • Content-Security-Policy 指令

    逐条读取指令:是否对脚本做了任何限制、'unsafe-inline'(使用 nonce 或哈希时不标记)、'unsafe-eval'、script-src 中的宽泛来源(如 *、https: 或 data:)、object-src、base-uri,以及策略是否仅为 Report-Only。

  • 点击劫持防护

    X-Frame-Options(包括无效值和已过时的 ALLOW-FROM),或者不是 * 也不是单纯协议的 CSP frame-ancestors 规则。

  • 其他防护标头

    X-Content-Type-Options 必须恰好是 nosniff;Referrer-Policy 会检查是否为 unsafe-url 或无法识别的值;Permissions-Policy 会检查哪些功能未加限制。跨源隔离标头仅作为参考信息列出。

  • 版本信息泄露和 source map

    暴露版本号的 Server、X-Powered-By、X-AspNet-Version、X-AspNetMvc-Version 和 X-Generator 标头,以及最多三个自有脚本的公开 source map。

  • Cookie 标记

    页面响应设置的 cookie,只看名称:HTTPS 上的 Secure、名称看起来像会话或令牌的 cookie 是否设置了 HttpOnly、未设置 Secure 的 SameSite=None、缺少 SameSite,以及作用于上级域名的 cookie。

  • CORS

    额外发送一次请求,携带一个无害的虚构 Origin(https://rudra-audit.invalid),看您的服务器是否会原样返回任意来源 — 以及是否同时允许凭据,这正是有风险的组合。

  • 混合内容

    HTTPS 页面上的 http:// 脚本、样式表或框架(主动混合内容),以及 http:// 图片或媒体(被动混合内容)。

  • security.txt

    /.well-known/security.txt 是否存在,是否有 Contact 行和未过期的 Expires 日期,让安全研究人员知道如何联系您。

  • 技术栈和可见暴露面

    可从标头和 HTML 中识别出的框架和服务,以及登录表单、页面中提到的 API 或文档 URL,以及 robots.txt 等公开文件。仅供了解,不扣分。

  • 客户端模式(人工复核)

    onclick 等内联事件处理程序,以及未使用 Subresource Integrity 加载的第三方脚本。这些是需要复核的低优先级提示,并非已确认的漏洞。

检查的工作原理

我们向您的页面发送一次普通的 GET 请求,跟随所有重定向并读取响应:标头的值、它设置的 cookie(只看名称和标记)以及 HTML。同时,我们还会发送一小组固定的只读请求:建立一次 TLS 连接以验证证书;发送一次携带无害测试 Origin 的 GET 请求来检查 CORS;请求一次 http://yourdomain/ 以查看其重定向方式;请求白名单内的文件 /.well-known/security.txt、robots.txt、sitemap.xml、humans.txt 和页面链接的 manifest;以及针对最多三个自有脚本,读取文件末尾并对其指明的 source map 发送一次 HEAD 请求。

不提交任何内容,不发送凭据,不使用攻击载荷,也不猜测路径。对私有或内部网络地址的请求会被阻止。如果页面返回服务器错误(5xx),我们不会分析其标头,因为错误页面往往与真实网站不同;这些检查会被标记为未运行,而不是未通过。

评分从 100 分开始,每项扣分都会在报告中列出。未使用 HTTPS 扣 40 分,证书无效或过期扣 40 分,TLS 连接失败扣 30 分,CORS 在携带凭据时信任任意来源扣 25 分,缺少 HSTS 标头扣 15 分,缺少 CSP 扣 12 分。较弱的设置扣分较少 — 例如没有 http→https 重定向扣 10 分,主动混合内容扣 8 分,CSP 仅为 Report-Only 扣 8 分,'unsafe-inline' 脚本扣 6 分,cookie 未设置 Secure 扣 6 分,HSTS max-age 过短扣 5 分。许多信息类发现不扣分,例如缺少 security.txt,同一问题也绝不会重复扣分。

您将看到的证据

每个标头都会显示其实际值和通俗的评估(良好、较弱或缺失);CSP 发现包含解析后的指令表;cookie 发现列出 cookie 名称及其标记,从不显示值;CORS 结果显示测试来源和返回的内容。每项发现都会说明我们的预期、适用的 URL、检查的可信度及其来源 — HTTP 响应、HTML 或 TLS 连接。

此工具不检查的内容

  • 它不是渗透测试

    不利用漏洞、不使用攻击载荷、不暴力破解,也不猜测隐藏路径。它只读取任何浏览器都会收到的配置。

  • 需要登录的页面

    我们从不登录或发送凭据,因此不测试需要登录的页面、管理后台和账户设置。

  • 您的代码和依赖项

    不审查服务器端代码,也不扫描您的 CMS、插件、库或服务器软件中的漏洞。

  • 恶意软件或网站被入侵

    它不查找恶意软件、页面篡改、垃圾内容注入或泄露的账户。

  • 您网站使用的所有 cookie

    只能看到页面自身响应设置的 cookie — 看不到之后由 JavaScript、其他页面或第三方添加的 cookie。从不读取 cookie 的值。

  • 您的表单如何运作

    会记录表单,但从不提交,因此无法测试服务器端验证、CSRF 防护和频率限制。

我们常发现的问题

  • 缺少 HSTS 或有效期过短

    非常常见,即使是将所有请求都重定向到 HTTPS 的网站也是如此 — 而测试时遗留下来的几分钟 max-age 几乎起不到保护作用。

  • 没有 CSP,或 CSP 允许的内容过多

    这是最常缺失的标头。即使设置了,script-src 中的 'unsafe-inline'、'unsafe-eval' 或 * 也常常会让它的大部分保护作用失效。

  • 没有点击劫持防护

    既没有 X-Frame-Options,也没有 frame-ancestors 规则。

  • 证书即将过期

    通常是因为在更换服务器或修改 DNS 后,自动续期停止了工作。

  • 暴露服务器版本

    类似“Server: Apache/2.4.41”或“X-Powered-By: PHP/7.4”的标头,会告诉攻击者该从哪里下手。

  • HTTP 没有重定向

    http://yourdomain/ 仍在提供页面,或只做临时(302)重定向,因此直接输入域名的访客可能会在未加密的连接下浏览。

  • 会话 cookie 未设置 Secure 或 HttpOnly

    脚本可以读取、或者可能通过普通 HTTP 发送的登录或会话 cookie。

如何修复

  1. 在提供网站服务的地方设置标头

    标头可以在您的 Web 服务器(Nginx add_header、Apache Header set)、CDN,或主机的设置或标头文件中配置。修改后重新运行检查,确认实际到达浏览器的值。

  2. 在 HTTPS 全面可用后开启 HSTS

    使用 Strict-Transport-Security: max-age=31536000(我们接受的最低值为 180 天)。只有当所有子域名都支持 HTTPS 时才添加 includeSubDomains,最后再考虑 preload。

  3. 逐步收紧 CSP

    先使用 Content-Security-Policy-Report-Only,再切换为强制执行。用 nonce 或哈希替代 'unsafe-inline',去掉 'unsafe-eval',列出确切的脚本来源而不是 * 或 https:,并添加 object-src 'none' 和 base-uri 'self'。

  4. 添加简单的标头

    X-Content-Type-Options: nosniff、Referrer-Policy: strict-origin-when-cross-origin 和 X-Frame-Options: DENY(或 SAMEORIGIN)很少会造成问题。

  5. 自动续期证书并设置重定向

    使用托管证书或可自动续期的 Let's Encrypt 证书,并将每个 http:// 请求以 301 或 308 重定向到对应的 https:// URL。

  6. 隐藏版本号

    关闭版本标识(例如 Nginx 中的 server_tokens off、PHP 中的 expose_php = Off),除非有意为之,否则不要在生产环境发布 source map。

  7. 为 cookie 设置标记

    在 HTTPS 网站上为每个 cookie 设置 Secure,为会话和登录 cookie 添加 HttpOnly,并明确设置 SameSite=Lax(或 Strict)。SameSite=None 必须同时设置 Secure。

常见问题

这是渗透测试或漏洞扫描吗?

不是。它只使用普通的 GET 和 HEAD 请求,读取任何浏览器都会收到的配置 — HTTPS、证书、标头值、cookie 标记、CORS。它不会尝试发现或利用漏洞。如需这类测试,请聘请合格的安全测试人员,并给予书面授权。

它能告诉我网站是否被黑了吗?

不能。它不扫描恶意软件、被篡改的页面或被盗用的账户。高分表示您的传输安全和浏览器安全中可见的部分配置良好 — 并不代表网站在各方面都是安全的。

它会评判我的标头设置得好不好吗?

是的,主要标头都会检查。HSTS 会检查 max-age 是否至少为 180 天以及是否有格式错误的指令;CSP 会逐条解析指令,检查 'unsafe-inline'、'unsafe-eval'、宽泛的脚本来源以及是否缺少 object-src 或 base-uri;X-Frame-Options、X-Content-Type-Options 和 Referrer-Policy 的值也会验证。

为什么我的 HTTP 网站没有检查 HSTS?

HSTS 只在 HTTPS 下才起作用。如果您的网站没有使用 HTTPS,那才是更大的问题,因此会改为报告这一点。

添加安全标头会导致我的网站出问题吗?

大多数标头都可以放心添加。Content-Security-Policy 可能会拦截您网站依赖的脚本、样式或嵌入内容,所以请先在 report-only 模式下测试。为 cookie 添加 Secure 或 SameSite 可能会影响跨多个域名的登录,因此添加后请测试登录功能。

CORS 检查对我的网站安全吗?

安全。它只是一次普通的 GET 请求,携带一个指向不可能存在的域名(rudra-audit.invalid)的 Origin 标头。不发送任何 cookie 或凭据,也不会更改任何内容;我们只读取返回了哪些 CORS 标头。

为什么有些发现被标记为需要人工复核?

内联 onclick 处理程序或未使用 Subresource Integrity 的脚本等模式,视具体情况可能没问题,也可能有风险。我们以低可信度标记它们,让您自行判断,而不是把它们当作已确认的问题。

实用指南

相关免费工具

更希望有人帮您修复?

这些检查和指南都是免费的。如果您更希望由专人来修改,我们的团队提供付费帮助。