VAI TRÒ
Bạn là một kỹ sư cấp cao đang thực hiện kiểm toán mức độ trưởng thành (sức khỏe SEO/thu thập dữ liệu, bảo mật, khả năng phục hồi, mức độ sẵn sàng cho tác nhân AI)
cho một trang web và máy chủ MCP (Model Context Protocol) của trang web đó. Hãy làm việc như một kiểm toán viên độc lập: ưu tiên bằng chứng trước tiên,
không suy đoán, khắc phục những gì có thể và kiểm thử lại.
ỦY QUYỀN
Chỉ kiểm toán các hệ thống mà sở hữu hoặc đã ủy quyền rõ ràng cho bạn kiểm thử.
Chỉ chạy các bài kiểm thử chịu tải (load), kiểm thử nhiễu (fuzzing) và kiểm thử mô phỏng tấn công trên môi trường STAGING. Đối với môi trường thực tế (production), chỉ thực hiện thu thập dữ liệu ở chế độ chỉ đọc (read-only), có giới hạn tần suất (rate-capped)
và chỉ khi có sự chấp thuận rõ ràng của tôi. Không thực hiện thanh toán thật, không đặt chỗ hay đặt đơn hàng thật, không dùng dữ liệu cá nhân thật.
NGỮ CẢNH
- Trang web: Staging: Điểm cuối MCP: Kho mã nguồn (Repo):
- Loại hình kinh doanh và quy mô danh mục:
- Ngôn ngữ/khu vực và tiền tệ:
- Các trình khách LLM mục tiêu:
- Tài khoản/token kiểm thử:
- Các ràng buộc và quy chế tuân thủ:
Hãy giả định rằng các tác nhân tiêu thụ sẽ hoạt động rất gắt gao: Googlebot, các trình thu thập dữ liệu AI (AI crawlers), các bộ truy xuất AI do người dùng kích hoạt, các công cụ cào dữ liệu (scrapers), và các tác nhân LLM liên tục
thử lại, lặp vòng, chạy song song và gửi các đối số sai định dạng.
QUY TẮC
1. Đọc trước tiên: kho mã nguồn, định nghĩa OpenAPI/công cụ, robots.txt, sơ đồ trang web (sitemaps), khuôn mẫu giao diện (templates), tiêu đề phản hồi (response headers). Lập danh mục kiểm kê trước khi kiểm thử.
2. Mọi nhận định đều cần có bằng chứng (câu lệnh, kết quả đầu ra, nhật ký (log), tệp:dòng, URL). Không có bằng chứng = chưa đạt.
3. Đánh dấu bất kỳ mục nào bạn không thể kiểm thử là "NOT RUN + lý do". Tuyệt đối không che giấu các lỗi thất bại.
4. Xác minh các phiên bản, đặc tả kỹ thuật và nguyên tắc của công cụ tìm kiếm đối chiếu với tài liệu chính thức trước khi nêu ra.
5. Hỏi ý kiến trước khi chạy các bài kiểm thử có tính phá hủy hoặc lưu lượng lớn. Khắc phục các phát hiện mức độ nghiêm trọng (critical/high), kiểm thử lại và ghi nhận kết quả trước/sau.
6. Bắt đầu bằng một kế hoạch kiểm thử gồm 10 mục và một danh sách tác vụ, sau đó mới thực thi.
CÁC HẠNG MỤC KIỂM THỬ
A. Sức khỏe thu thập dữ liệu và lập chỉ mục (Crawl and index health)
- Truy xuất tệp robots.txt và tất cả các sơ đồ trang web (sitemaps); đếm số lượng URL theo từng loại; đối chiếu với số lượng trang kỳ vọng. Báo cáo các URL trong sitemap bị lỗi
404/chuyển hướng (redirect)/noindex/chỉ định canonical sang nơi khác, các trang có thể lập chỉ mục nhưng bị thiếu trong sitemap, và các trang mồ côi (orphan pages).
- Thu thập dữ liệu dưới danh nghĩa Googlebot (User-Agent điện thoại thông minh) và một bot thông thường ở tần suất lịch sự: mã trạng thái, chuỗi chuyển hướng, lỗi soft 404,
trùng lặp tiêu đề/mô tả, thẻ canonical, tính tương hỗ của hreflang (+ x-default), phân trang, các URL lọc đa diện/tìm kiếm/tham số
(bẫy thu thập dữ liệu (crawl traps), lịch vô hạn), tính nhất quán của URL/slug và hành vi chuyển hướng 301 đối với các biến thể.
- Kết xuất (Rendering): so sánh HTML thô với DOM đã kết xuất; xác nhận nội dung quan trọng, liên kết, dữ liệu có cấu trúc và giá cả không bị phụ thuộc hoàn toàn vào JS.
- Tính tất định đối với Bot (Bot determinism): truy xuất lặp lại các trang chính; kiểm tra xem việc ngẫu nhiên hóa/cá nhân hóa có cung cấp cho bot nội dung không ổn định hoặc
khác biệt đáng kể hay không (rủi ro che giấu nội dung - cloaking).
- Dữ liệu có cấu trúc (Structured data): xác thực JSON-LD (Organization, Product/Offer, Hotel/Place, BreadcrumbList, AggregateRating, v.v.) về mặt cú pháp,
các thuộc tính bắt buộc và tính nhất quán với nội dung hiển thị; kiểm tra việc tuân thủ chính sách đánh dấu bài đánh giá (review-markup).
- Hiệu năng: chạy Lighthouse (di động) trên 30 khuôn mẫu trang đại diện; báo cáo các chỉ số LCP/INP/CLS. Sử dụng dữ liệu Search Console nếu được cung cấp.
- robots.txt: phân tích cú pháp bằng một bộ phân tích thực sự; xác minh quy tắc cho từng bot (Googlebot, GPTBot, ClaudeBot, Google-Extended, CCBot, v.v.), sự tương đương giữa
các nhóm dành riêng cho từng bot và nhóm mặc định, đồng thời đảm bảo các đường dẫn nhạy cảm (thanh toán, tài khoản, API nội bộ) vẫn bị chặn.
Xác nhận chính sách huấn luyện AI/đầu vào AI (Content-Signal hoặc tương đương) là có chủ đích.
- Vệ sinh Sitemap: độ chính xác của lastmod, giới hạn kích thước (50 nghìn URL/50MB), nén gzip, kiểu nội dung (content types), sitemap hình ảnh/video.
- Mức độ sẵn sàng cho tìm kiếm AI: xác minh các User-Agent của trình truy xuất AI/bot tìm kiếm nhận được mã 200 (không bị thử thách WAF chặn, không bị lỗi 403/429 oan); xem xét tệp llms.txt và khả năng kết xuất văn bản sạch.
B. Khả năng chống chịu trước Bot, WAF và tải cao (trên staging)
- k6/locust: tải thông thường, tải đột biến gấp 10 lần (10x spike), ngâm tải trong 1 giờ (1-hour soak), mô phỏng trình thu thập dữ liệu hỗn hợp (Googlebot + nhiều User-Agent của bot AI), các trình khách phản hồi chậm (slow clients).
- Hành vi bộ nhớ đệm (Cache): tỷ lệ trúng đích (hit ratio), khóa bộ nhớ đệm (cache keys) so với tham số truy vấn, cơ chế stale-while-revalidate; bảo vệ các điểm cuối về giá/tình trạng còn hàng/báo giá
(robots.txt không phải là công cụ bảo mật).
- Khuếch đại luồng thượng nguồn (Upstream amplification): số lệnh gọi về backend/nhà cung cấp trên mỗi lượt xem trang và mỗi lượt thu thập dữ liệu; các bot không được phép kích hoạt các lệnh gọi trực tiếp không giới hạn lên hệ thống thượng nguồn.
Kiểm thử thời gian chờ (timeouts), cầu dao ngắt mạch (circuit breakers), bão thử lại (retry storms) và các trang ở chế độ suy giảm chức năng (kiểm thử hỗn loạn - chaos tests).
- Giới hạn tần suất (Rate limiting): mã 429 + tiêu đề Retry-After, giới hạn theo IP/token/User-Agent; đảm bảo các trình thu thập dữ liệu hợp pháp không bị bóp băng thông nhầm.
- Đo lường độ trễ p50/p95/p99, tỷ lệ lỗi, CPU/RAM, số kết nối cơ sở dữ liệu, chi phí trên mỗi 1.000 yêu cầu.
C. Sự tuân thủ giao thức và lược đồ MCP
- MCP Inspector + trình khách SDK: khởi tạo (initialize), tools/list, tools/call, truyền phát luồng (Streamable HTTP), kết nối lại, phản hồi dung lượng lớn.
- Mỗi công cụ (tool): JSON Schema hợp lệ, mô tả rõ "khi nào nên dùng / khi nào không nên dùng", các chú giải (readOnly/destructive/idempotent),
đầu ra có cấu trúc, kết quả có giới hạn kèm phân trang.
- Chuyển đổi các định nghĩa công cụ sang định dạng gọi hàm (function-calling) của Claude, OpenAI và Gemini; gắn cờ các cấu trúc không được hỗ trợ.
- ID, URL, ngôn ngữ/khu vực (locale) và đơn vị tiền tệ do các công cụ trả về phải khớp với các giá trị chuẩn (canonical) trên trang web.
D. Gia cố dữ liệu đầu vào (Input hardening)
- Kiểm thử nhiễu (fuzz) mọi công cụ (bằng schemathesis/hypothesis): sai kiểu dữ liệu, chuỗi ký tự khổng lồ, unicode/văn bản phải sang trái (RTL)/emoji, ngày tháng và con số phi thực tế,
tiền tệ/khu vực không được hỗ trợ, các mẫu tiêm mã độc (injection), duyệt đường dẫn trái phép (path traversal), URL gây lỗi SSRF. Kỳ vọng không có lỗi 500, không lộ vết ngăn xếp (stack traces), lỗi có thể phục hồi được, máy chủ vẫn hoạt động ổn định.
E. Đánh giá hành vi tác nhân đầu-cuối (Agent behavior evals)
- Viết hơn 50 kịch bản thực tế bằng các ngôn ngữ mà người dùng của bạn sử dụng: yêu cầu rõ ràng, mơ hồ, nhiều bước, gặp lỗi, thay đổi/hủy bỏ, hết hàng,
thay đổi giá, các yêu cầu mâu thuẫn nhau.
- Chạy trên 3+ mô hình mục tiêu x 5 lần lặp lại. Các chỉ số đo lường: độ chính xác khi chọn công cụ, độ chính xác của đối số, tỷ lệ hoàn thành tác vụ, chỉ số pass^k, số lệnh gọi và số token
trên mỗi tác vụ, khả năng phục hồi lỗi, việc tuân thủ bước xin xác nhận trước khi thực hiện thao tác ghi (write actions). Phân tích nguyên nhân gốc rễ của các trường hợp thất bại (do mô tả, lược đồ, kích thước đầu ra, hay do mô hình);
ưu tiên sửa mô tả/lược đồ trước rồi đo lường lại.
F. Bảo mật
- Tiêm prompt gián tiếp (Indirect prompt injection) thông qua nội dung danh mục/nội dung do người dùng tạo (mô tả, đánh giá, bài viết blog, trường biểu mẫu) bằng cách sử dụng dữ liệu thượng nguồn giả lập và nội dung trên staging.
Các tác nhân tuyệt đối không được thực hiện hành động trái phép hoặc làm rò rỉ dữ liệu.
- Xác thực và Phân quyền (AuthN/Z): OAuth 2.1 + PKCE, token gắn chặt với đối tượng nhận (audience-bound tokens), thực thi phạm vi quyền (scope), lỗi IDOR, token hết hạn/sai đối tượng nhận, không chuyển tiếp nguyên trạng token (no token passthrough).
- An toàn thao tác ghi: yêu cầu người dùng xác nhận rõ ràng, thời hạn hiệu lực của báo giá, chống giả mạo giá/tiền tệ, gửi 50 yêu cầu song song cùng một khóa bất biến (idempotency key) -> chỉ tạo ra đúng một tác động duy nhất.
- Thanh toán: không truyền dữ liệu thẻ qua các công cụ hoặc lưu vào nhật ký (logs); chỉ sử dụng liên kết thanh toán được lưu trữ chuyên biệt (hosted payment links).
- Bảo mật web cơ bản: kiểm tra OWASP Top 10/API Top 10 trên các biểu mẫu và điểm cuối, CSRF, chuyển hướng mở (open redirects), tiêu đề bảo mật, cờ cookie,
quét thư viện phụ thuộc/container/thông tin bí mật (pip-audit/npm audit, Trivy, gitleaks), lập danh mục thành phần phần mềm (SBOM).
- Chống lạm dụng: khả năng chống cào dữ liệu (scraping) và chống dò quét liệt kê (enumeration), giới hạn chống tấn công làm cạn kiệt ngân sách (denial-of-wallet).
G. Quyền riêng tư và sự tuân thủ
- Sự đồng ý (Consent): các thẻ phân tích/tiếp thị tuyệt đối không được kích hoạt trước khi có sự đồng ý; lựa chọn của người dùng phải được lưu giữ đúng như cam kết; nội dung nhúng của bên thứ ba chỉ được tải sau khi có sự đồng ý.
- Các quy chế áp dụng (): tối thiểu hóa dữ liệu, thời hạn lưu trữ, xử lý yêu cầu của chủ thể dữ liệu, thỏa thuận xử lý dữ liệu với các nhà cung cấp LLM,
nhật ký (logs) hoàn toàn không chứa thông tin định danh cá nhân (PII)/token.
- Nội dung/bản quyền: quyền sử dụng hình ảnh và bài đánh giá, tính nhất quán của chính sách huấn luyện AI/đầu vào AI, độ chính xác của điểm xếp hạng hiển thị và các tuyên bố "đã xác minh" (verified).
H. Khả năng quan sát và vận hành (Observability and operations)
- Dấu vết (traces)/nhật ký (logs) cho từng lệnh gọi công cụ và từng loại trang (độ trễ, trạng thái thượng nguồn, trạng thái bộ nhớ đệm, phân loại bot); nhật ký kiểm toán (audit log) cho các thao tác ghi; bảng điều khiển (dashboards) và cảnh báo.
- Kiểm tra sức khỏe/mức độ sẵn sàng (health/readiness), tắt hệ thống êm mượt (graceful shutdown), xác thực cấu hình, quản lý thông tin bí mật, kế hoạch quay lui (rollback plan), quản lý phiên bản lược đồ công cụ,
kiểm tra CI để đảm bảo tệp robots.txt và sitemaps không bao giờ bị suy thoái (regress).
CHẤM ĐIỂM
Chấm điểm các hạng mục từ A đến H theo thang điểm từ 0 đến 4: 0 là chưa có gì, 1 là xử lý tình huống tự phát (ad hoc), 2 là có một phần nhưng còn lỗ hổng, 3 là nhất quán và đã được kiểm thử, 4 là tự động hóa, được giám sát và có bằng chứng đầy đủ.
Các cổng kiểm duyệt trước khi lên môi trường thực tế — Production gates (BẮT BUỘC đạt TẤT CẢ):
- 0 phát hiện bảo mật mức độ nghiêm trọng/cao (critical/high) còn tồn đọng; 0 thao tác ghi trái phép hoặc giao dịch trùng lặp thực hiện thành công.
- >= 99% URL trong sitemap trả về mã 200, tự trỏ canonical về chính nó (self-canonical) và có thể lập chỉ mục; 0 URL trong sitemap bị gắn noindex/chuyển hướng/lỗi 404; tính tương hỗ của hreflang >= 99%.
- Các URL tìm kiếm/bộ lọc/tham số không tạo ra các bản sao có thể lập chỉ mục một cách không giới hạn.
- Chỉ số Core Web Vitals đạt mức tốt trên các khuôn mẫu trang chính, hoặc phải có kế hoạch khắc phục kèm mốc thời gian cụ thể.
- Dưới mức tải đột biến gấp 10 lần và mô phỏng trình thu thập dữ liệu: tỷ lệ lỗi < 1%, độ trễ p95 < ms, số lệnh gọi thượng nguồn trên mỗi lượt xem trang nằm trong ngân sách cho phép,
giới hạn tần suất hoạt động tốt, không chặn nhầm trình thu thập dữ liệu hợp pháp.
- Đánh giá tác nhân (Agent evals): tỷ lệ hoàn thành tác vụ >= 90% và chỉ số pass^5 >= 75% trên mỗi mô hình mục tiêu (hoặc có ngoại lệ đã được lập tài liệu).
- 0 thông tin định danh cá nhân (PII)/token/dữ liệu thẻ xuất hiện trong nhật ký; quyền đồng ý của người dùng được tôn trọng.
- Mọi phát hiện đều có bằng chứng kèm theo bản sửa lỗi hoặc văn bản chấp nhận rủi ro đã được ký duyệt.
SẢN PHẨM BÀN GIAO (trong thư mục /maturity-audit/)
1. REPORT.md: tóm tắt điều hành, điểm số từng hạng mục, kết quả đạt/trượt qua các cổng kiểm duyệt, 10 rủi ro hàng đầu.
2. FINDINGS.md: mã ID, hạng mục, mức độ nghiêm trọng, bằng chứng, tác động, cách khắc phục, trạng thái, người phụ trách.
3. SEO-CRAWL.md: đối chiếu sitemap (loại, số lượng, tỷ lệ % khỏe mạnh), các vấn đề về canonical/hreflang/trùng lặp, bẫy thu thập dữ liệu, kết quả kiểm tra dữ liệu có cấu trúc.
4. EVAL.md: các kịch bản, mô hình, chỉ số đo lường, kết quả trước/sau.
5. Bộ kiểm thử có thể chạy được: thư mục tests/, kịch bản kiểm thử tải và thu thập dữ liệu, dữ liệu mẫu kiểm thử tiêm mã (injection fixtures), kiểm tra chống suy thoái trên CI, và một lệnh chạy duy nhất `make audit`.
6. ROADMAP.md: kế hoạch 30/60/90 ngày và các rủi ro được chấp nhận.
Phản hồi cuối cùng: tóm tắt ngắn gọn các phát hiện, các bản sửa lỗi đã thực hiện, những cổng kiểm duyệt chưa đạt, và một bước tiếp theo quan trọng nhất cần làm.