Kiểm tra Unicode & ký tự giả mạo API
Phân tích từng ký tự (mã Unicode, hệ chữ, ký tự ẩn, ký tự đảo chiều) và phát hiện tên miền giả mạo như аpple.com viết bằng chữ Cyrillic.
API kiểm tra Unicode cho thấy chuỗi thực sự chứa gì. Với text, API liệt kê từng ký tự kèm mã Unicode, các byte UTF-8, loại ký tự và hệ chữ, đồng thời đánh dấu ký tự ẩn (khoảng trắng độ rộng 0, gạch nối mềm, BOM, khoảng trắng không ngắt) và các ký tự điều khiển hai chiều dùng trong tấn công “Trojan Source”. API cũng cho biết độ dài tính theo code point, đơn vị UTF-16, byte và ký tự hiển thị, và văn bản đang ở dạng NFC hay NFD (hữu ích với tiếng Việt từ macOS).
Với domain, API chuyển đổi giữa Unicode và punycode (bücher.de ↔ xn--bcher-kva.de), liệt kê hệ chữ của từng nhãn và các ký tự trông giống chữ Latin, rồi tính “bộ khung” mà tên miền trông giống. аpple.com (với chữ а Cyrillic) bị đánh dấu nghi ngờ vì trông giống apple.com nhưng là một tên miền khác, mánh lừa đảo IDN homograph kinh điển.
Bảng ký tự trông giống nhau gồm các ký tự Cyrillic, Hy Lạp, Cherokee và toàn độ rộng hay bị dùng để giả mạo nhất (một phần dữ liệu confusables của Unicode).
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
text | body|query | string | không | Văn bản cần phân tích (liệt kê tối đa 2.000 ký tự; summary_only=true cho văn bản dài hơn). | |
domain | body|query | string | không | Tên miền cần kiểm tra (Unicode hoặc punycode). |
Ví dụ
curl "https://apibox.io.vn/v1/unicode-check?domain=аpple.com" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/unicode-check?domain=аpple.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/unicode-check?domain=аpple.com",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/unicode-check?domain=аpple.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ề
{
"input": "аpple.com",
"ascii": "xn--pple-43d.com",
"unicode": "аpple.com",
"is_idn": true,
"labels": [
{
"label": "аpple",
"scripts": [
"Cyrillic",
"Latin"
],
"mixed_scripts": true,
"confusable_chars": [
{
"char": "а",
"codepoint": "U+0430",
"script": "Cyrillic",
"looks_like": "a"
}
]
},
{
"label": "com",
"scripts": [
"Latin"
],
"mixed_scripts": false,
"confusable_chars": []
}
],
"skeleton": "apple.com",
"looks_like": "apple.com",
"suspicious": true,
"note": "This domain mixes scripts or uses look-alike characters: it renders like \"apple.com\" but is a different domain."
}
Ứng dụng
- Chặn tên người dùng, tên miền giả mạo khi đăng ký
- Kiểm tra lừa đảo với liên kết trong email, tin nhắn
- Tìm ký tự ẩn làm hỏng dữ liệu nhập hoặc phép so sánh
- Debug lỗi mã hoá trong văn bản tiếng Việt
Hỏi đáp
Tấn công IDN homograph là gì?
Đăng ký tên miền dùng ký tự của hệ chữ khác trông y hệt, ví dụ а Cyrillic thay cho a Latin, để giả mạo một website quen thuộc.
Vì sao văn bản tiếng Việt của tôi không phải NFC?
Văn bản từ file macOS hoặc một số bộ gõ dùng ký tự tổ hợp (NFD). Trông giống nhau nhưng so sánh sẽ khác; hãy chuẩn hoá bằng dạng NFC trả về.
API có dùng toàn bộ danh sách confusables của Unicode không?
Một tập con chọn lọc gồm các ký tự thực sự hay bị dùng để giả chữ Latin, để chạy nhanh và tránh báo nhầm với văn bản hợp lệ không phải chữ Latin.
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.