Show HN: Little Rat - Tiện ích Chrome giám sát các lệnh gọi mạng của tiện ích mở rộng khác
(github.com/dnakov)- Little Rat là một tiện ích Chrome nhỏ dùng để giám sát và tùy chọn chặn các lệnh gọi mạng của những tiện ích Chrome khác
- Việc phát hiện và chặn lưu lượng của tiện ích mở rộng khác chỉ khả thi khi bật flag extensions-on-chrome-urls tại
chrome://flags/#extensions-on-chrome-urlshoặc chạy Chrome với--extensions-on-chrome-urls - Cài đặt thủ công bằng cách tải ZIP từ GitHub, giải nén, bật Developer mode trong Chromium/Chrome Extensions, rồi dùng quy trình Load unpacked extension với thư mục
little-rat-main
1 bình luận
Các ý kiến trên Hacker News
Mình muốn đây là tính năng mặc định của Firefox hoặc Chrome hơn là một tiện ích bên thứ ba. Như vậy tỷ lệ chấp nhận mới đủ cao để các trình duyệt khác cũng phải để ý; mình muốn có thể chỉ cho một tiện ích cụ thể được gửi yêu cầu GET tới các URL tĩnh đã định sẵn, trong khi không được phép thay đổi header
Làm vậy vẫn cho phép cập nhật dữ liệu nhưng giảm nguy cơ rò rỉ. Một số tiện ích chỉ hoạt động bên trong trình duyệt cục bộ nên thậm chí không cần truy cập mạng. Tuy nhiên nếu tiện ích có thể sửa nguồn trang thì vẫn có thể lách việc truyền dữ liệu, nên có lẽ vì thế các trình duyệt không làm. Dù vậy, mình nghĩ thử làm vẫn tốt hơn là bỏ cuộc và phó mặc cho tiện ích Chrome
Quy trình gần giống kiểm tra UI: bật gỡ lỗi từ xa rồi chạy Browser Toolbox: https://superuser.com/questions/1608096/how-to-inspect-firef...
Cách này cũng hữu ích để tìm xem cần gì trong file CSS user-chrome khi muốn thay đổi hiển thị tab vượt quá mức theme. Dù vậy bản thân việc dùng CSS user-chrome hơi phiền
Để thấy được yêu cầu mạng của tiện ích, mình phải chuyển sang multi-process mode, nhìn chung đây là hành vi hợp lý
Ví dụ uBlock lấy một danh sách chặn tùy ý mà mình bấm thử: https://i.imgur.com/wBYbBM2.png
Firefox tự cập nhật danh sách safe-browsing trong nền: https://i.imgur.com/JYxWwjW.png
Tiện ích được làm tốt sẽ chỉ thỉnh thoảng hiện thông báo, còn tiện ích cần máy chủ sẽ hiện vào thời điểm người dùng kỳ vọng nó giao tiếp với máy chủ. Tiện ích gửi phím bấm hoặc dữ liệu đáng ngờ chắc sẽ rất dễ bị phát hiện
Tuy nhiên có thể dùng wildcard trong URL, và hình như cũng có giá trị đặc biệt nghĩa là tất cả URL. Dù vậy không nên có nhiều tiện ích cần quyền như thế
Ví dụ dù bản thân tiện ích không thể tạo yêu cầu, nếu nó có quyền sửa DOM của trang web thì có nhiều cách để lừa trang web gửi yêu cầu thay nó
Tiện ích này không hẳn là rất dễ cài, nên sẽ tốt hơn nếu thêm ảnh chụp màn hình hiển thị các sự kiện mạng thực sự đã bắt được. Ảnh chụp hiện tại lại che mất tính năng thú vị nhất
Sau đó quay lại màn hình trình duyệt thông thường, bấm biểu tượng tiện ích hình mảnh ghép ở bên phải thanh địa chỉ, rồi bấm biểu tượng ghim nhỏ cạnh Little Rat; tiện ích sẽ được cài và xuất hiện trong danh sách biểu tượng tiện ích
Hay đấy. Thành thật mà nói, mình ngạc nhiên là chuyện này làm được
Mình không rõ chính xác các API này cung cấp dữ liệu gì, nhưng nếu một tiện ích có thể truy cập yêu cầu của tiện ích khác thì liệu có thể phát sinh lo ngại bảo mật với tiện ích quản lý mật khẩu hoặc tiện ích dùng token xác thực không?
Tốt. Mấy thứ kiểu này có cảm giác nên nằm dưới dạng chrome:// URL
Trông ổn đấy, mình tò mò không biết có kế hoạch port sang Firefox không
Có ai biết giải pháp thay thế nào làm việc tương tự trên Firefox không?
Bạn sẽ ngạc nhiên khi thấy Mozilla bỏ qua khá nhiều vi phạm chính sách tiện ích rõ ràng trong các tiện ích “được khuyến nghị”
[1]: https://firefox-source-docs.mozilla.org/devtools-user/browse...
[2]: https://firefox-source-docs.mozilla.org/networking/http/logg...
[3]: https://firefox-source-docs.mozilla.org/devtools-user/about_...
var chrome = browser;ở đầu mỗi file JS là có thể chạy trên Firefox. API tiện ích của Firefox gần như là bản sao Chrome Extension APIs, chỉ khác một chútKhi lên Chrome Store thì mình sẽ dùng thử
declarativeNetRequest.onRuleMatchedDebug[0], mà cái này có vẻ chỉ dành cho debug, nên không rõ Chrome Web Store có cho phép không0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
Sao lại không có trên Chrome Store?
chrome.declarativeNetRequest, đây cũng là API mà uBlock dùngGọn gàng, nhưng phần này cần xử lý cẩn thận hơn: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
Mình không muốn phải lo liệu một tiện ích khác có thể chèn XSS vào đây bằng request, ID, tên bị thao túng hay không
unsafe-inlinevà ID tiện ích do Chrome tự động tạoChỉ riêng việc không có cuộc gọi mạng không chứng minh được một tiện ích là an toàn. Nó vẫn có thể cache dữ liệu mà bạn muốn giữ riêng tư rồi gửi đi định kỳ