26 điểm bởi GN⁺ 2023-11-26 | 6 bình luận | Chia sẻ qua WhatsApp
  • Sqids là một thư viện mã nguồn mở tạo ID theo kiểu YouTube từ các con số
  • ID được tạo ra ngắn, có thể sinh bằng bảng chữ cái tùy chỉnh và được đảm bảo không có xung đột
  • Ví dụ về ID được cung cấp có dạng như https://example.com/Lqj8a0

Lý do sử dụng Sqids

  • Mục đích sử dụng chính của Sqids nằm ở hiệu ứng trực quan
  • Khi muốn dùng ID thay cho số trong webapp, Sqids có thể là một lựa chọn tốt
  • Các trường hợp sử dụng gồm rút gọn liên kết, dùng an toàn trong URL, ID sự kiện, mã hóa/giải mã không xung đột và mật khẩu dùng một lần
  • Không phù hợp với dữ liệu nhạy cảm; nếu dùng làm ID người dùng, số lượng người dùng có thể bị lộ

Đặc điểm của Sqids

  • Có thể tạo ID ngắn từ các số không âm
  • Dễ mã hóa và giải mã
  • Các ID được tạo tự động không chứa những từ chửi thề phổ biến
  • Hỗ trợ xáo trộn bảng chữ cái cho ID tùy chỉnh
  • Hỗ trợ 40 ngôn ngữ lập trình, trong đó 15 ngôn ngữ dùng thiết kế mới
  • Tạo ra cùng một ID trên mọi phiên bản
  • Kích thước thư viện nhỏ và có giấy phép cởi mở

Ý kiến của GN⁺

  • Thư viện Sqids hữu ích cho các nhà phát triển muốn dùng ID ngắn, không xung đột thay cho số trong webapp
  • Thư viện này cung cấp các ID hấp dẫn về mặt thị giác và hỗ trợ nhiều ngôn ngữ lập trình, giúp dễ tiếp cận hơn
  • Mang lại cơ hội thuận lợi cho các nhà phát triển mã nguồn mở và được bảo hộ bản quyền theo giấy phép MIT

6 bình luận

 
haebom 2023-11-27

Khá phù hợp để ngăn chặn việc crawl.

 
stardust33 2023-11-30

Bạn có thể giải thích kỹ hơn về việc dùng nó như thế nào để ngăn chặn crawling không?

 
ragus 2023-12-02

Nếu URL đơn giản là posts/1, posts/2, posts/3 thì crawler sẽ thử chạy bằng cách thêm 1, 2, 3, 4, 5...
Còn nếu URL có dạng posts/L12Qsd, posts/dei24A thì có lẽ nó không làm được như vậy

 
stardust33 2023-12-05

À! Cảm ơn bạn đã trả lời.

 
jaypark 2023-11-27

Tò mò không biết nó khác gì so với hashids nên tìm thử thì thấy khi nhập https://hashids.org sẽ được chuyển đến https://sqids.org/. Có vẻ như họ đã đổi tên.

https://sqids.org/faq#hashids

 
GN⁺ 2023-11-26
Ý kiến trên Hacker News
  • Khả năng suy ra insight kinh doanh từ các công ty dùng ID tuần tự

    • Ví dụ, có thể ước tính tốc độ tăng trưởng của công ty từ ID được cấp khi đăng ký thành viên
    • Có thể áp dụng cho mọi loại tài nguyên trong ứng dụng
    • Tự hỏi mức độ quan trọng của “chuỗi rác” trên thanh URL trong thời đại ngày nay
    • Vì hầu hết trình duyệt che đi phần lớn URL, nên đang dùng uulids trong lúc chờ UUID v7 được sử dụng rộng rãi
    • Thành phần thời gian tích hợp đôi khi hữu ích (ví dụ: quy tắc hợp nhất đối tượng)
  • Thắc mắc về việc nhắc đến mã dùng một lần

    • Mã truy cập cần phải khó đoán, nhưng không nhất thiết phải là duy nhất
    • Nếu cung cấp nguồn ngẫu nhiên phù hợp thì vẫn hoạt động, nhưng đặc điểm “được lấp đầy bằng chuỗi rác” khiến nó trông phức tạp hơn thực tế
    • 4~8 chữ số ngẫu nhiên hoạt động tốt và cung cấp mức độ bảo mật rõ ràng
    • Chữ số dễ hiểu hơn chữ cái Latin có phân biệt hoa thường, đặc biệt với người dùng ngôn ngữ dùng hệ chữ khác
  • Thất vọng vì không thể định dạng số nguyên 128-bit hoặc mảng byte

    • Điều này sẽ cho phép định dạng UUID
    • Không thích dùng ID số nguyên công khai
    • ID tăng dần có nguy cơ làm lộ thông tin quan trọng
    • Thích định dạng UUID sang Base64URL để làm ngắn lại cho URL, mã QR, v.v.
  • Trong ứng dụng Ruby thì dùng cách chuyển đổi sang cơ số cao

    • Sqid cung cấp thư viện Ruby và cho phép đặt cơ số cao hơn nhiều, bao gồm chữ in hoa và emoji
    • Cần những con số lớn hơn rất nhiều trước khi việc tiết kiệm không gian tạo ra khác biệt đáng kể
    • Khó biết liệu có đáng để thêm một dependency mới hay không
  • Việc lọc từ tục có thể trở thành gánh nặng ngay từ thiết kế

    • Cần giữ bất biến danh sách từ bị cấm để bảo toàn việc mã hóa
    • Nếu không, các sqids trước đó có thể bị giải mã sai
  • Thích dùng nanoid và bộ ký tự an toàn

    • Đề xuất dùng cách tiếp cận từ điển tương tự thay vì triển khai hardcode để tìm các từ “xấu”
    • Bày tỏ sự quan tâm tới bộ kiểm thử hiệu năng
    • UUID v4 được tối ưu hóa để tạo trong hầu hết ngôn ngữ, nên đặt câu hỏi liệu giải pháp tùy biến có thực sự tốt hơn không
  • Thảo luận về việc dùng chuỗi được tạo ngẫu nhiên

    • Dùng cho ID, token khôi phục mật khẩu, v.v.
    • Đã tạo ra hàng triệu chuỗi và mỗi ngày có hàng trăm nghìn người kiểm tra chúng
    • Không có trường hợp phàn nàn nào về ID nội dung ngẫu nhiên
    • Xã hội hiện đại quá sợ xúc phạm ai đó đến mức bộ lọc từ tục đã mở rộng sang cả ID cơ sở dữ liệu và token khôi phục mật khẩu
    • Nếu đặt độ dài tối thiểu là 8 thì khả năng xuất hiện một từ tục hoàn chỉnh như toàn bộ ID là thấp
  • Bối rối về việc cung cấp liên kết cho 40 ngôn ngữ trong phần "Get Started"

    • Chỉ có 15 trong số 40 ngôn ngữ là có thể bắt đầu sử dụng, 25 ngôn ngữ còn lại là các kho lưu trữ khung, kêu gọi mọi người star repository để thể hiện sự quan tâm
  • Câu hỏi về cách điều chỉnh hoặc phát triển blocklist

    • Nếu ID nằm trong blacklist thì chỉ cần tăng lên
    • ID bị cố định theo nội dung blacklist, và nếu điều chỉnh nó thì một số phân đoạn của các ID đã tạo trước đó sẽ bị vô hiệu
  • Trong chủ đề này, nhiều người nhắc đến đây là cách tốt để che giấu insight từ ID/số

    • Nhưng vì giá trị được tạo ra có thể dễ dàng giải mã, nên có lẽ chỉ cần giải mã vài con số là vẫn có thể lấy được insight?