Kiểm tra header bảo mật API
Chấm điểm bảo mật HTTP của website từ A+ đến F: chuyển hướng HTTPS, HSTS (preload), Content-Security-Policy, chống nhúng iframe, cookie, CORS, mixed content.
API kiểm tra header bảo mật tải một URL và đánh giá các lớp bảo vệ mà trình duyệt áp dụng từ phản hồi: chuyển hướng từ http:// sang HTTPS, Strict-Transport-Security (max-age, includeSubDomains và khả năng vào danh sách HSTS preload), Content-Security-Policy (cảnh báo unsafe-inline không có nonce, unsafe-eval và nguồn script dạng wildcard), chống clickjacking bằng X-Frame-Options hoặc frame-ancestors, X-Content-Type-Options, Referrer-Policy, Permissions-Policy và các header cách ly cross-origin.
API cũng kiểm tra cờ của cookie mà trang đặt (Secure, HttpOnly, SameSite), cấu hình CORS nguy hiểm (* kèm credentials), tài nguyên tải qua http:// trên trang https (mixed content) và header để lộ phiên bản phần mềm. Mỗi phát hiện là một mục kiểm tra có trạng thái và thông báo tiếng Anh hoặc tiếng Việt (lang=vi); điểm và xếp hạng (A+ khi không còn gì cần cải thiện) tóm tắt kết quả.
Các chỉ thị HSTS, CSP đã phân tích, danh sách cookie và toàn bộ header phản hồi được trả về để bạn áp dụng quy tắc riêng. Kết quả cache 10 phút (fresh=true để kiểm tra lại).
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
url | body|query | string | có | URL trang. | |
lang | body|query | string | không | en | Ngôn ngữ thông báo: en hoặc vi. |
fresh | body|query | boolean | không | false | Bỏ qua cache 10 phút. |
Ví dụ
curl "https://apibox.io.vn/v1/security-headers?url=https://github.com/" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/security-headers?url=https://github.com/', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/security-headers?url=https://github.com/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/security-headers?url=https://github.com/');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"url": "https://github.com/",
"final_url": "https://github.com/",
"status": 200,
"score": 100,
"grade": "A+",
"summary": {
"passed": 8,
"info": 1,
"warnings": 0,
"errors": 0
},
"hsts": {
"max_age": 31536000,
"include_subdomains": true,
"preload": true,
"preload_eligible": true
},
"csp": {
"default-src": "'none'",
"frame-ancestors": "'none'",
"…": "…"
},
"checks": [
{
"id": "http_redirect",
"status": "pass",
"message": "http:// redirects to https://"
},
{
"id": "hsts",
"status": "pass",
"message": "HSTS max-age 365 days, includeSubDomains, preload",
"value": "max-age=31536000; includeSubdomains; preload"
},
{
"id": "csp",
"status": "pass",
"message": "Content-Security-Policy restricts scripts",
"value": "…"
},
"…"
]
}
Ứng dụng
- Checklist bảo mật trước khi ra mắt website
- Theo dõi website của khách hàng tại agency, đơn vị IT
- Chấm điểm bảo mật trong công cụ làm web, bảng điều khiển hosting
- Dạy bảo mật web với phản hồi cụ thể
Hỏi đáp
A+ nghĩa là gì?
Điểm từ 90 trở lên và không còn cảnh báo hay lỗi: HTTPS có chuyển hướng, HSTS dài hạn, CSP giới hạn script, chống nhúng iframe, nosniff và Referrer-Policy.
unsafe-inline lúc nào cũng xấu?
Với script, nó vô hiệu hoá phần lớn khả năng chống XSS của CSP, trừ khi có nonce hoặc hash (khi đó trình duyệt bỏ qua nó). Với style rủi ro thấp hơn nên không bị trừ điểm.
API có quét lỗ hổng không?
Không. API chỉ đọc một phản hồi giống trình duyệt; không thăm dò website.
API liên quan
Tạo mã hash
Tính MD5, SHA-1, SHA-256, SHA-384, SHA-512 và CRC32 của chuỗi hoặc file trong một lần gọi, xuất hex hoặc base64, hỗ trợ ký HMAC.
B64Mã hoá / Giải mã
Mã hoá hoặc giải mã chuỗi sang Base64, Base64URL, hex, URL encode, HTML entity, Unicode escape, ROT13 hay nhị phân chỉ với một lần gọi API.
***Tạo mật khẩu
Tạo mật khẩu ngẫu nhiên an toàn bằng CSPRNG (4–256 ký tự, tối đa 100 cái mỗi lần) hoặc kiểm tra độ mạnh, entropy và thời gian bẻ khoá của mật khẩu.