Phân tích tĩnh — mã nguồn không rời khỏi máy chủ của bạn

Tối ưu hóa rủi ro bảo mật
cho dự án, hệ thống

Quét mã nguồn PHP, Python, JavaScript/TypeScript, Java/Kotlin, Go, C#, C/C++, Rust, Swift, Dart và SQL. Mỗi lỗi được chỉ rõ nằm ở dòng nào, vì sao nguy hiểm, và sửa thế nào.

325+
luật phát hiện
12
ngôn ngữ
OWASP
ánh xạ Top 10
0
dữ liệu gửi ra ngoài
57.6
Điểm OWASP Benchmark
65.1%
Tỷ lệ phát hiện đúng (TPR)
7.5%
Tỷ lệ báo nhầm (FPR)
2,740
Ca kiểm thử có đáp án
Kiểm chứng độc lập trên bộ chuẩn OWASP Benchmark v1.2 — xem chi tiết →

Đăng nhập để bắt đầu quét

Tạo tài khoản miễn phí để quét mã nguồn, lưu lịch sử và tự sửa lỗi. Gói Free không mất phí.

Quét như thế nào

Ba bước, không cần cài thêm gì trên máy chủ.

01

Đọc hiểu cấu trúc mã

Bộ quét dựng cây token và mặt nạ đánh dấu vùng nào là chuỗi ký tự, vùng nào là chú thích — nên luôn phân biệt được đâu là mã đang chạy, đâu chỉ là văn bản, tránh báo nhầm.

02

Lần theo dữ liệu người dùng

Giá trị đến từ $_GET, request.args, req.body hay getParameter() được đánh dấu rồi theo dõi qua từng phép gán, destructuring và tham số handler — cho PHP, Python, JavaScript và Java. Khi nó chạm tới hàm nguy hiểm mà chưa được làm sạch, lỗi được ghi nhận.

03

Giải thích và đề xuất bản sửa

Mỗi phát hiện kèm đoạn mã gốc, lý do nguy hiểm, mã CWE tương ứng và một ví dụ sửa cụ thể bằng tiếng Việt.

Phát hiện được những gì

Từ lỗ hổng bảo mật nghiêm trọng đến lỗi cú pháp làm trang trắng.

SQL & NoSQL Injection

CWE-89

Ghép chuỗi truy vấn, truy vấn thô trong ORM, $wpdb không prepare, SQL động trong stored procedure, $where của MongoDB.

Thực thi lệnh & mã

CWE-78

shell_exec, eval, subprocess shell=True, Runtime.exec, exec.Command, Process.Start, system() ghép chuỗi.

XSS & Template Injection

CWE-79

echo chưa escape, innerHTML, Html.Raw, HTML() của Shiny, render_template_string, WebView evaluateJavaScript.

Path Traversal & Zip Slip

CWE-22

include theo tham số, đọc ghi tệp từ đường dẫn người dùng, giải nén không kiểm tra đường dẫn.

SSRF & Open Redirect

CWE-918

Máy chủ gửi request tới URL do người dùng quyết định; chuyển hướng tới địa chỉ không kiểm tra.

Giải tuần tự không an toàn

CWE-502

unserialize, pickle, ObjectInputStream, BinaryFormatter, NSKeyedUnarchiver, readRDS từ tệp lạ.

Lộ thông tin bí mật

CWE-798

Khoá AWS, Stripe, GitHub, mật khẩu và chuỗi kết nối ghi cứng; token trong UserDefaults / SharedPreferences.

Mật mã yếu

CWE-327

MD5 cho mật khẩu, DES / RC4 / ECB, khoá và IV ghi cứng, rand() cho token, tắt xác thực TLS.

Lỗi bộ nhớ C/C++

CWE-120

gets, strcpy, sprintf không giới hạn, format string từ biến, double free, malloc thiếu +1.

LDAP / XPath / JNDI / ReDoS

CWE-90

Bộ lọc LDAP, biểu thức XPath, tên JNDI lookup và regex dựng từ dữ liệu người dùng.

Sai cấu hình

CWE-16

Debug bật, CORS mở, cookie thiếu httpOnly, .env lộ ra web, Android debuggable, iOS tắt ATS, web.config.

Hạ tầng & container (IaC)

CWE-250

Dockerfile (:latest, curl|sh, chạy root), docker-compose (privileged, docker.sock), Kubernetes, Terraform (S3 public, SG 0.0.0.0/0), GitHub Actions, nginx.

Thư viện có lỗ hổng (SCA)

CWE-1104

Đối chiếu composer.lock, package-lock.json, requirements.txt, go.sum… với OSV.dev để tìm thư viện cũ có CVE đã biết (tuỳ chọn, mặc định tắt).

Lỗi cú pháp & chất lượng

Tệp PHP không chạy được, JSON hỏng, catch rỗng, unwrap() / try! có thể crash, lỗi Go bị bỏ qua.

Câu hỏi thường gặp

Mã nguồn của tôi có bị gửi đi đâu không?

Không. Toàn bộ việc phân tích mã nguồn diễn ra ngay trên máy chủ đang chạy trang này, và tệp tải lên bị xoá ngay khi quét xong. Ngoại lệ duy nhất là tính năng quét lỗ hổng thư viện (SCA) — nếu bạn bật, nó gửi TÊN và PHIÊN BẢN thư viện (ví dụ "lodash@4.17.11") tới cơ sở dữ liệu OSV.dev để tra cứu CVE. Nó KHÔNG bao giờ gửi mã nguồn, và mặc định đang tắt.

Có cần cài thêm công cụ gì lên máy chủ không?

Không. Bộ quét không gọi công cụ ngoài (semgrep, eslint…) hay bất kỳ lệnh shell nào, nên chạy được cả trên hosting chia sẻ có chặn hàm exec().

Kết quả có chính xác tuyệt đối không?

Không có công cụ phân tích tĩnh nào đạt được điều đó. Mỗi phát hiện đi kèm mức độ tin cậy: "Chắc chắn" gần như luôn đúng, còn "Cần xem lại" là những trường hợp cần bạn đọc mã để tự đánh giá.

Dự án lớn thì quét có bị treo không?

Không. Việc quét được chia thành từng lô nhỏ qua nhiều lượt gọi, nên không bao giờ chạm giới hạn thời gian chạy của máy chủ. Bạn thấy tiến trình nhích dần theo thời gian thực.

Tôi tự thêm luật kiểm tra riêng được không?

Được. Các luật nằm trong thư mục app/Services/Scanner/Rules, mỗi luật khai báo biểu thức chính quy, mức độ nghiêm trọng và phần mô tả. Thêm một luật mới là xong.