3 điểm bởi GN⁺ 2023-09-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Một hình thức hosting trong đó toàn bộ các tệp của website được nén thành ZIP rồi mã hóa Base64 và gắn vào sau tên miền, khiến chính địa chỉ đó trở thành một website hoàn chỉnh
  • Cấu trúc cho phép truyền tải website chỉ bằng cách chia sẻ địa chỉ, không cần tải tệp riêng hay lưu trên máy chủ
  • Xử lý nén ZIP, mã hóa Base64 và tạo URL chỉ bằng một dòng lệnh, đồng thời cũng hỗ trợ cách kéo thả tệp ZIP nếu không có dòng lệnh
  • Máy chủ chỉ lưu nội dung trong RAM trong 15 phút rồi hủy, và chỉ xử lý lại khi cùng một liên kết được mở lại
  • mã nguồn mở như một phần của dự án máy chủ web Lwan, thậm chí có thể in ra giấy và quét lại qua mã QR

Khái niệm smolsite

  • Toàn bộ website được chứa trong URL, nên khi chia sẻ địa chỉ thì bản thân website cũng được truyền đi cùng
  • Giống như ví dụ gồm hai tệp (index.html, mylogo.png), có thể gói nhiều tệp lại và chuyển thành một địa chỉ duy nhất

Cách tạo smolsite

  • Nén tất cả tệp thành tệp ZIP rồi mã hóa Base64, sau đó nối vào sau https://smolsite.zip/

FAQ

  • Khi không có dòng lệnh

    • Có thể chia sẻ bằng cách kéo tệp ZIP vào thanh màu tím ở phía dưới
  • Có thể host trên giấy không

    • Có, và có thể xem phiên bản có thể in/quét bằng cách nhấp vào mã QR
  • Có phải mã nguồn mở không

  • Cách máy chủ xử lý ZIP

    • Nội dung được xử lý trên máy chủ và giữ trong RAM trong 15 phút, sau đó bị xóa
    • Tuy nhiên, nếu ai đó mở lại cùng một liên kết thì sẽ được xử lý lại
  • Ứng phó với ZIP bomb

    • Dữ liệu đã deflate được gửi nguyên trạng tới trình duyệt mà không chỉnh sửa, và vì không có giải nén đệ quy nên có mức phòng vệ nhất định
  • Có thể tải xuống hoặc xóa nội dung không

    • Dù smolsite cố gắng hết sức để ngăn việc chia sẻ chính xác URL, nhưng vì nội dung nằm trong URL nên không thể xóa hoàn toàn
      • Người có liên kết vẫn có thể trích xuất nội dung mà không cần smolsite

1 bình luận

 
GN⁺ 2023-09-07
Ý kiến trên Hacker News
  • Hay thật
    https://smolsite.zip/UEsDBBQAAgAIAFtLJ1daaE7RlwIAAN4EAAAKAAA...
    • Hay thật. Vậy là cũng có thể khiến TinyURL host một website
      https://tinyurl.com/dmk9e4m2
    • Tôi đã thử tạo QR code bằng liên kết này, và thật sự chẳng có gì đặc biệt. Thật thú vị khi có thể host một website ngay trong QR code
  • Bổ sung cho ai chưa biết: cũng có thể làm điều tương tự bằng data URI
    data:text/html,My%20small%20website
    Look,%20it's%20real!
    Nếu muốn, bạn cũng có thể mã hóa base64 bằng trình tạo data URI. Ưu điểm của smolsite là nếu dùng zip thì có thể nhét được nhiều hơn một chút so với data URI, và một số JavaScript API hoạt động trên URL smolsite nhưng không hoạt động trên data URI
    • Có thể dùng kỹ thuật này để tạo một notepad đơn giản
      data:text/html,
      Tôi để nó trên thanh bookmark để dùng
    • Ghi trước ở đây trước khi ai đó tạo một smolsite cài service worker cho domain đó rồi gửi dữ liệu phân tích của mọi smolsite khác về server của mình
    • Đang dùng Base64 + gzip để lưu khoảng 5KB văn bản trong một tweet: https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
    • Dù tốt hay xấu, trình duyệt web và các dịch vụ rút gọn URL chặn việc mở và redirect data URL, nên chúng chủ yếu chỉ hữu ích cho bookmark trong trình duyệt
      [1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_...
  • Về chủ đề nhét những thứ kỳ lạ vào URL, còn có chú chó được biểu diễn bằng một số nguyên tố: https://geonnave.github.io/primg/#17976931348623159077293051...
    • Cái này đáng kinh ngạc. Chỉ riêng việc nghĩ ra cách biểu diễn hình ảnh bằng biểu diễn nhị phân của một số nguyên tố đã rất ấn tượng rồi
  • Câu trả lời của tôi cũng nằm trong URL
    https://wgx.github.io/anypage/?eyJoMSI6IkhlbGxvIEhOISIsImgyI...
  • Hay. Tôi nhớ tới nopaste, một pastebin lưu văn bản ngay trong URL bằng cách nén bằng LZMA rồi mã hóa base64
    [0] https://nopaste.boris.sh/
  • Cách này gửi nội dung lên server để giải nén. Phức tạp hơn một chút, có thể đặt zip vào phần anchor, còn phản hồi thì cung cấp mã để phía client tự giải nén từ đó

Tuy nhiên, vì phần anchor không được gửi lên máy chủ, nên dù máy chủ muốn cũng không thể kiểm tra nội dung độc hại được truyền qua đó.

  • Tôi cũng nghĩ vậy. Nếu máy chủ nội dung tĩnh dùng một routing glob để đưa toàn bộ lưu lượng về cùng một trang web thì vẫn làm được mà không cần anchor. Làm vậy thì việc hosting trở nên thật sự đơn giản.
  • Những thứ như thế này thật sự rất hay, và tôi nghĩ Show HN vốn nên có cảm giác như vậy, thay vì là công cụ marketing để các tổ chức khác đẩy sản phẩm.
    • Kiểu này cũng hay, nhưng cũng nên tính đến việc Y Combinator là một vườn ươm startup. Việc mọi người giới thiệu sản phẩm của mình, ở một mức độ nào đó, có vẻ nên được khuyến khích.
    • Tôi không xem đó là quảng cáo. Nhiều người đến Hacker News để xem các hacker đang làm gì, và tôi cũng đến vì lý do đó.
      Những bài Show HN tôi từng thấy đến giờ đều thú vị, và chúng tạo động lực để tôi cũng bắt đầu dự án của mình rồi trau chuốt nó để có thể giới thiệu ở đây. Cảm giác thật sự rất tuyệt khi người khác gửi bài về công việc của mình và mình có thể trò chuyện ở đó.
    • Bạn có cảm giác các bài Show HN mới lạ hơn đang bị các bài mang tính doanh nghiệp lấn át không?
    • Vì vậy những bài Show HN thú vị sẽ được upvote.
  • Trước đây tôi từng nghĩ đến ý tưởng triển khai Thư viện Babel của Borges theo kiểu này. Đưa toàn bộ văn bản vào URL, tối ưu các từ tiếng Anh bằng một cách mã hóa tinh vi hơn, rồi gắn thêm hệ thống tìm kiếm để có thể tìm tên của mình, các đoạn văn bản, v.v.
    Tất nhiên cuối cùng sẽ vướng giới hạn độ dài URL, nhưng cũng có thể đặt thêm một tầng để curator kết hợp các nhóm URL thành văn bản lớn hơn. Có thể thêm chút phép màu LLM để tạo các nhóm đó, và khi ấy nó sẽ trở thành một thư viện chứa không chỉ mọi cuốn sách đã được viết, mà cả mọi cuốn sách có thể được viết.
    Tất nhiên là nói đùa thôi. Tôi biết điều này cũng giống như nói rằng Notepad đã chứa sẵn mọi cuốn sách từng tồn tại, chỉ là bạn phải tự gõ chúng vào mà thôi.
  • Một số công trình tương tự từng được đăng trước đây:
    https://news.ycombinator.com/item?id=34312546
    https://news.ycombinator.com/item?id=2464213
    • Nhìn bình luận ở link đầu tiên nói rằng Yahoo đã nhét một đối tượng JSON được mã hóa base64 khổng lồ vào URL làm tôi nhớ đến một chuyện kinh khủng từng làm ở chỗ làm cũ.
      Để tránh phải trả tiền cho vendor website mua module lịch sự kiện đắt đỏ, tôi đã code một trang công khai tạo lịch bằng cách đặt một schema sự kiện JSON đơn giản được mã hóa base64 vào thuộc tính data-events. Nhân viên dùng một trang riêng tư để lấy dữ liệu sự kiện hiện có từ trang công khai, điền sẵn vào trình dựng lịch, chỉnh sửa rồi xuất ra đoạn code mới và dán vào trang công khai.
      Về cơ bản thì nó hoạt động tốt, nhưng cuối cùng hình như chúng tôi vẫn trả tiền cho add-on lịch.
    • Hiện tôi không tìm được link HN, nhưng đây là dự án Twitter CDN tôi đã đăng vài năm trước. Nó dùng data URI theo kiểu base64+gzip.
      https://sonnet.io/projects#:~:text=Laconic!%20(a%20Twitter%2...
  • Buồn cười nhưng cũng có thể có ứng dụng thực tế. Dù vậy hacker nên cẩn thận.
    • Tôi lập tức nghĩ ra đây là một cách tuyệt vời để gửi payload độc hại cho một đối tượng không ngờ tới. Một WAF tốt chắc sẽ chặn vì đáng ngờ, nhưng có vẻ cũng có thể vượt qua bằng vài thủ thuật.