2 điểm bởi GN⁺ 2025-05-20 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Đợt tái định vị thương hiệu HIBP được chuẩn bị từ lâu nay đã chuyển thành dịch vụ thực tế, đồng thời công bố bản dựng lại toàn bộ website và cải tổ tính năng trên gần như mọi trang
  • Tìm kiếm chính đã cải thiện trải nghiệm kết quả, nhưng trên website đã bỏ tìm kiếm username·phone number và vẫn giữ tương thích với API hiện có
  • Trang mới cho từng vụ rò rỉ tách riêng thông tin chi tiết để kết quả tìm kiếm bớt phức tạp, đồng thời đưa hướng dẫn ứng phó cụ thể sau sự cố sang một màn hình riêng
  • Các tính năng cần xác minh quyền truy cập email được gom vào dashboard dựa trên Sign In, còn domain search chạy nhanh hơn nhờ JSON API và lọc phía client
  • Stack công nghệ được tổ chức quanh Azure, Cloudflare, .NET 9.0, Bootstrap và TypeScript; đồng thời loại bỏ Google reCAPTCHA và chỉ dùng Cloudflare Turnstile

Website mới và trải nghiệm tìm kiếm

  • Website Have I Been Pwned mới đã được ra mắt
    • Commit đầu tiên cho công việc tái định vị trong kho công khai được thực hiện vào tháng 2/2024
    • Thương hiệu mới được soft launch vào tháng 3/2025
    • Bản phát hành lần này bao gồm việc dựng lại toàn bộ website, thay đổi chức năng trên gần như mọi trang, bổ sung tính năng mới và mở cửa hàng merchandise
  • Ô tìm kiếm chính vẫn giữ vai trò là tính năng tiêu biểu của HIBP nhưng thay đổi cách hiển thị kết quả
    • Một số người dùng sẽ thấy phản ứng chúc mừng cùng hiệu ứng confetti
    • Nếu phát hiện có rò rỉ, hệ thống sẽ hiển thị phản hồi màu đỏ điềm tĩnh hơn
    • Kết quả ở dạng timeline có thể cuộn theo thứ tự thời gian đảo ngược, kèm phần tóm tắt cho từng vụ rò rỉ
  • Website đã bỏ hỗ trợ usernamephone number trong tìm kiếm
    • Tìm kiếm username được đưa vào cho sự cố Snapchat năm 2014
    • Tìm kiếm phone number được đưa vào cho sự cố Facebook năm 2021
    • Hai kiểu dữ liệu này chưa từng được nạp thêm ngoài hai trường hợp đó
    • Rất khó xác định chủ sở hữu của username, còn phone number thì khó parse vì khác biệt về định dạng quốc tế và cách viết
    • Cảnh báo qua SMS có chi phí cao hơn email rất nhiều
    • Việc cho phép kiểu nhập này trên website cũ gây ra nhầm lẫn và tăng gánh nặng hỗ trợ kiểu như “vì sao số của tôi không có trong một vụ rò rỉ cụ thể”
    • API vẫn tiếp tục hỗ trợ để giữ tương thích, nhưng tác giả nói không nên kỳ vọng sẽ có thêm dữ liệu mới

Trang riêng cho từng vụ rò rỉ

  • Breach page mới tách riêng thông tin chi tiết của từng vụ để giảm tình trạng kết quả tìm kiếm chính trở nên quá phức tạp
  • Thay đổi cốt lõi của trang là hướng dẫn cụ thể hơn về những việc người dùng có thể làm sau khi bị rò rỉ
    • Tập trung vào việc người bị ảnh hưởng nên làm gì
    • Cũng bao gồm hướng kết nối với các dịch vụ đối tác như identity protection provider
  • Trong tương lai, dữ liệu về các vụ rò rỉ và dữ liệu theo từng người dùng sẽ tiếp tục được bổ sung
    • Nếu dịch vụ đó hỗ trợ 2FA, hệ thống sẽ hiển thị cụ thể thay vì chỉ đưa hướng dẫn chung
    • Passkey cũng sẽ được thêm thành một mục riêng
    • Trong các cuộc trao đổi với NCSC của Anh, họ đã bàn về hướng dẫn rò rỉ dữ liệu được bản địa hóa để hiển thị logo NCSC và tài nguyên liên quan cho người dùng tại Anh

Dashboard hợp nhất và domain search

  • Khi các tính năng cần xác minh quyền truy cập địa chỉ email tăng dần qua nhiều năm, chúng đã được hợp nhất vào một central dashboard
    • Khi khái niệm sensitive breach được đưa vào sau sự cố Ashley Madison năm 2015, việc xác minh qua email nhận được trở thành yêu cầu cần thiết
    • Năm 2019, để giảm lạm dụng API, HIBP thêm một lớp xác thực vào API và yêu cầu xác minh email trước khi mua API key
    • Sau đó còn có domain search dashboard, quản lý thuê bao trả phí và tra cứu stealer logs
  • Dashboard mới hiển thị các tính năng liên quan sau khi xác minh quyền truy cập email đằng sau một lần Sign In
    • Bên trong có cả tính năng cho công chúng lẫn tính năng thiên về doanh nghiệp
    • Trong tương lai sẽ bổ sung hỗ trợ passkey để có thể đăng nhập mà không cần gửi email
    • Bài viết cũng nêu ví dụ phù hợp với dashboard là đăng ký nhận cảnh báo cho địa chỉ email của người thân nhưng nhận thông báo ở một địa chỉ khác
  • Domain search được cải thiện đáng kể về bố cục màn hình và khả năng lọc
    • Danh sách các domain đã xác minh trở nên gọn gàng hơn
    • Kết quả tìm kiếm cung cấp phần tóm tắt rõ ràng hơn
    • Đã thêm lọc theo từng địa chỉ email và bộ lọc “chỉ xem vụ rò rỉ mới nhất”
  • Domain search dashboard nhận JSON từ API và toàn bộ dashboard hoạt động như một ứng dụng một trang
    • Việc lọc được thực hiện phía client trên toàn bộ JSON của domain search
    • Đã thử nghiệm hoạt động được ngay cả với domain có hơn 250.000 địa chỉ email bị rò rỉ
    • Tuy vậy, với quy mô dữ liệu như thế, nhận qua API sẽ phù hợp hơn là cuộn trong trình duyệt
  • Việc xác minh quyền sở hữu domain cũng đã được viết lại hoàn toàn
    • Giao diện trở nên gọn gàng và đơn giản hơn
    • Các phương thức xác minh ngoài email vẫn còn cần được làm mượt thêm

Tài liệu API và cửa hàng merchandise

  • Bản thân API không có thay đổi nào
    • Đợt cập nhật này không tạo ra thay đổi phá vỡ tương thích
    • Người dùng API hiện tại sẽ không gặp phần nào bị hỏng
  • Tài liệu API chưa thể chuyển sang cách làm mới và vẫn giữ tài liệu cũ
    • Trong repo GitHub UX rebuild đã có thảo luận về cách tài liệu hóa API, và đồng thuận chung là OpenAPI
    • Việc triển khai bằng Scalar đã được thực hiện và có thể xem tại haveibeenpwned.com/scalar
    • Scalar cung cấp ví dụ cho nhiều ngôn ngữ và trình chạy thử ngay trong trình duyệt
    • Do không kịp hoàn thiện trong lịch ra mắt lớn, tài liệu API hiện tại được giữ lại và chỉnh cho khớp phong cách website mới
    • Khi có thêm thời gian, tác giả dự định chuyển sang bản triển khai bằng Scalar
  • Cửa hàng merchandise của HIBP đã mở tại merch.haveibeenpwned.com
    • Cửa hàng được vận hành qua Teespring
    • Tất cả sản phẩm được bán theo giá vốn, không nhằm tạo lợi nhuận
    • Đây là một thử nghiệm vui dành cho cộng đồng
  • Với sticker, do tùy chọn của Teespring không đạt chất lượng như Sticker Mule trước đây nên cửa hàng Sticker Mule hiện có vẫn tiếp tục được dùng
    • Đồng thời cũng cung cấp open source artwork để ai muốn có thể tự in ở nơi khác

Stack công nghệ và hiệu năng

  • Dịch vụ gốc vẫn tiếp tục chạy trên Microsoft Azure
    • Website dùng App Service
    • Phần lớn API dùng Functions theo mô hình serverless
    • Sử dụng SQL Azure Hyperscale, queues, blobs, tables và các khả năng của storage account
    • Phần lớn mã được viết bằng C#, dùng .NET 9.0 và ASP.NET MVC trên .NET Core
  • Cloudflare vẫn tiếp tục giữ vai trò lớn
    • Có nhiều mã chạy trong Workers
    • Dữ liệu nằm trong R2 storage
    • Sử dụng WAF và caching
    • Phần chống tự động hóa chỉ dùng Cloudflare Turnstile và đã loại bỏ hoàn toàn Google reCAPTCHA
  • Frontend dùng thế hệ Bootstrap mới nhất, SASS và TypeScript
    • CSS được viết bằng SASS
    • JavaScript được viết bằng TypeScript
  • Hiệu năng website cũng có cải thiện đo đếm được
    • Theo kiểm tra Pingdom, kích thước trang giảm 28%
    • Số lượng request giảm 31%
    • Thời gian tải biến động lớn nên không khẳng định có khác biệt lớn
    • Tác giả nhấn mạnh rằng sau 11 năm vẫn giảm được tỷ lệ hai chữ số về kích thước trang và số request là điều đáng kể
  • Hệ thống không thêm các thành phần có thể bị xem là gánh nặng theo dõi hay quảng cáo
    • Số liệu traffic thực tế dựa trên lưu lượng đi qua edge node của Cloudflare
    • Product placement của 1Password chỉ gồm văn bản và hình ảnh
    • Không theo dõi outbound click
    • Điều này cũng khiến việc bàn bạc product placement với các công ty chống trộm danh tính vốn muốn các chỉ số theo dõi xâm lấn trở nên khó hơn

Việc sử dụng AI trong quá trình phát triển

  • ChatGPT đã được dùng rộng rãi trong quá trình tái xây dựng, đặc biệt là vài ngày cuối
    • Nó được dùng để tìm icon phù hợp cho heading “Index” trong Bootstrap icons
    • Cách dùng là tìm ra icon phù hợp trong hơn 2.000 icon chỉ trong khoảng 30 giây
  • AI cũng được dùng để kiểm tra quá trình chuyển website
    • Tác giả nhờ viết PowerShell script để crawl haveibeenpwned.com và in ra các URL duy nhất
    • Cũng nhờ viết script kiểm tra xem các path tìm thấy có tồn tại trên stage.haveibeenpwned.com hay không
    • Nó đã giúp phát hiện file security.txt bị thiếu
    • Nhưng cũng tìm ra cả những mục chưa từng tồn tại, nên vẫn cần “trust, but verify”
  • Nó cũng được dùng cho các việc nhỏ như tư vấn CSS, cấu hình Cloudflare rule hay các điểm đặc thù của web app .NET Core
    • Tác giả ước tính tỷ lệ câu trả lời đúng khoảng 90%
    • Ông đánh giá rất tích cực đến mức nói rằng nếu không chủ động dùng AI trong phát triển phần mềm thì là đang làm sai

Ra mắt và vấn đề với Turnstile

  • Website mới được triển khai vào sáng sớm Chủ nhật theo thời gian của tác giả
    • Gần như mọi thứ diễn ra tốt, chỉ có một hai glitch nhỏ được sửa và triển khai nhanh chóng
    • Bài viết được đăng sau 2 ngày hệ thống đã live để dọn bớt vấn đề trước
    • Trong khoảng thời gian đó đã có hơn 12 bản phát hành mới được triển khai để lặp cải tiến nhanh
  • Ngay cả những thay đổi nhỏ như điều khoản sử dụng và chính sách quyền riêng tư cũng tốn rất nhiều thời gian
    • Cần phản ánh các cập nhật nhỏ trong cách xử lý dữ liệu và các dịch vụ mới như stealer logs
    • Việc làm việc với luật sư đã tiêu tốn nhiều giờ và hàng nghìn đô la
  • Cloudflare Turnstile là cơ chế chống tự động hóa không chuyển traffic sang Google như Google reCAPTCHA
    • Nó có thể được triển khai hoàn toàn vô hình
    • Trong trình duyệt, script Cloudflare tạo challenge, sau đó được gửi cùng HTTP request và được xác minh ở phía server
    • HIBP đã áp dụng nó dưới một hình thức nào đó từ năm 2023
  • Ở những nơi việc chặn bot là quan trọng như form gửi email, nếu Turnstile thất bại thì người dùng được hướng dẫn thử lại hoặc tải lại trang
    • Nhiều trường hợp chỉ cần bấm lần hai hoặc reload trang là giải quyết được
    • Nếu vẫn không được thì có thể cần xem xét triển khai widget Turnstile dễ thấy hơn và đòi hỏi người dùng tương tác
  • Trên trang tìm kiếm chính, Turnstile cũng đóng vai trò quan trọng
    • Trang gửi request bất đồng bộ tới API endpoint kèm challenge token
    • Nếu challenge thất bại và endpoint của HIBP trả về HTTP 401 cùng Invalid Turnstile token, hệ thống phải fallback sang full page post
    • Khi website mới vừa ra mắt, phần fallback này chưa hoạt động nhưng sau đó đã được sửa
    • Với full page post, Cloudflare managed challenge sẽ được hiển thị; xâm lấn hơn nhưng đáng tin cậy hơn
  • Theo thống kê của Cloudflare, khoảng 82% challenge được phát hành đã được giải thành công
    • Trong 18% không được giải, một phần đáng kể có thể là bot đúng như Turnstile mong muốn chặn
    • Tỷ lệ request của người dùng thật bị chặn có thể chỉ ở mức một chữ số, và tác giả cho biết sẽ tiếp tục tìm cách giảm con số này

Chưa có bình luận nào.

Chưa có bình luận nào.