Sự bị đánh giá thấp của tiện ích mở rộng trình duyệt: lời hứa của phần mềm có thể bị hack (2019)
(geoffreylitt.com)- Tiện ích mở rộng trình duyệt là một hệ sinh thái phần mềm có thể bị hack hiếm hoi, cho phép người dùng thay đổi ứng dụng web theo những cách mà nhà phát triển gốc không dự tính, khác với nền tảng smartphone và desktop
- Hơn 180.000 tiện ích trong Chrome Store cùng tỷ lệ cài đặt của gần một nửa người dùng Chrome cho thấy ngay cả người dùng phổ thông cũng tự lắp ghép môi trường sử dụng được cá nhân hóa nếu có cách làm đủ dễ
- Phạm vi ứng dụng rộng của tiện ích đến từ tính mở của web như mã phía client có thể đọc được, markup giàu ngữ nghĩa và bố cục web tiêu chuẩn, thay vì các API riêng cho từng ứng dụng
- Các tiện ích như nhập mật khẩu, đọc chú âm Hán tự, chú thích, chặn quảng cáo, phát ở tốc độ 2x là những công cụ nhỏ hoạt động xuyên nhiều website, tạo ra một trải nghiệm phần mềm khác với mô hình xoay quanh các ứng dụng khổng lồ
- Các tiện ích độc hại và xâm phạm quyền riêng tư vẫn cần được xử lý, nhưng nếu cân bằng được khả năng tiếp cận, tính tương thích và quyền hạn thì có thể giữ được khả năng mở rộng giúp người dùng thay đổi sâu hơn phần mềm họ đang dùng
Vì sao tiện ích mở rộng trình duyệt lại đặc biệt
- Gần đây, các cuộc thảo luận về tiện ích mở rộng trình duyệt tập trung vào tiện ích độc hại thu thập lịch sử web và việc Google hạn chế chức năng chặn quảng cáo, nhưng tiện ích vẫn là một ví dụ đặc biệt của phần mềm do người dùng dẫn dắt
- Trong các nền tảng phần mềm lớn, tiện ích mở rộng trình duyệt là ngoại lệ hiếm hoi cho phép và khuyến khích người dùng thay đổi ứng dụng họ dùng hằng ngày vượt ra ngoài ý đồ của nhà phát triển ban đầu
- Trên nền tảng smartphone và desktop, những thay đổi kiểu này hiếm hoặc không thể thực hiện, nhưng trong trình duyệt thì đã trở thành hoạt động thường nhật
- Tiện ích khơi lại cảm giác rằng người dùng có thể kiểm soát sâu hơn cách mình sử dụng máy tính
Phần mềm do người dùng tự lắp ghép
- Khi một nền tảng phần mềm đủ mở, cách người dùng phổ thông thiết lập quan hệ với phần mềm cũng thay đổi
- Nếu cài 4 tiện ích cho Gmail để thay đổi từ thiết kế hình ảnh đến tính năng cốt lõi, thì ở một góc độ nào đó, bạn đã tự lắp ghép một trình khách email của riêng mình
- Người dùng không chỉ là người tiêu thụ thụ động của các ứng dụng làm sẵn, mà có thể trực tiếp cấu hình cách dùng máy tính được cá nhân hóa cho bản thân
- Chrome Store có hơn 180.000 tiện ích, và gần một nửa người dùng Chrome cài tiện ích mở rộng trình duyệt
- Sự phổ biến này cho thấy khi có cách dễ dàng để mở rộng phần mềm, nhiều người dùng thực sự sẽ tận dụng cơ hội đó
Một nền tảng có thể bị hack hơn là API cho từng ứng dụng
- Tiện ích mở rộng trình duyệt có phạm vi ứng dụng rất rộng: nhập mật khẩu, đọc Hán tự tiếng Nhật, đơn giản hóa thiết kế hình ảnh của Gmail, tô sáng và chú thích bài viết, lưu để đọc sau, phát video ở tốc độ 2x, chặn quảng cáo, v.v.
- Điểm cốt lõi của phạm vi ứng dụng rộng này là đa số tiện ích thay đổi ứng dụng theo những cách mà nhà phát triển gốc không lên kế hoạch cụ thể
- Một tờ báo tiếng Nhật khi xuất bản bài viết không cần tính trước khả năng tương thích với tiện ích đọc chú âm Hán tự mà tiện ích vẫn có thể hoạt động
- Nhà phát triển tiện ích không bị trói vào các API riêng cho từng ứng dụng vốn phản ánh góc nhìn mở rộng của nhà phát triển ứng dụng, nên có tự do sáng tạo lớn hơn
- Một số đặc tính của nền tảng web giúp tạo ra khả năng mở rộng không được lên kế hoạch trước
- Cách triển khai web truyền thống đưa mã phía client tới trình duyệt dưới dạng con người có thể đọc được
- Ngay cả khi mã bị làm rối hoặc được biên dịch từ ngôn ngữ khác, sourcemap vẫn quan trọng để giữ lợi thế này
- Mô hình bố cục của web khuyến khích markup ngữ nghĩa được chuẩn hóa
- Tiện ích quản lý mật khẩu hoạt động vì các trang web dùng ổn định thẻ
formđể gửi mật khẩu thay vì tự triển khai riêng
- Ngay cả khi website không được tạo ra cho tiện ích, đôi khi vẫn cần những cách lách thông minh, nhưng thường có thể làm được với khối lượng công việc hợp lý mà không cần nhiều năm reverse engineering
- Dù có thể nảy sinh căng thẳng giữa nhà phát triển website và nhà phát triển tiện ích, nhưng nếu phía website không phải làm thêm việc thì họ thường chấp nhận các tiện ích sáng tạo hơn
- Những tính năng ngách chỉ một số ít người dùng muốn có có thể được thành viên cộng đồng đủ động lực xây thành tiện ích, nhờ đó cũng giảm gánh nặng cho nhà phát triển ứng dụng
Không phải ứng dụng lớn mà là công cụ nhỏ
- Nhiều tiện ích mở rộng trình duyệt hoạt động như công cụ đa dụng giúp cải thiện trải nghiệm sử dụng mọi website
- Tiện ích chú thích có thể dùng trên mọi website mà không đòi hỏi mỗi bài viết phải có một công cụ tô sáng riêng
- Giống như bút dạ quang vật lý, bạn học một công cụ rồi áp dụng nó trong nhiều ngữ cảnh để thu được đòn bẩy lớn
- Trên nhiều nền tảng phần mềm, người ta nghĩ hệ điều hành cung cấp công cụ xuyên suốt còn bên thứ ba cung cấp các ứng dụng độc lập tách biệt, nhưng với tiện ích trình duyệt thì bên thứ ba cũng bổ sung công cụ
- Phần mềm ở quy mô nhỏ cũng làm thay đổi tính kinh tế
- Đa số tiện ích là miễn phí, và phạm vi chức năng nhỏ khiến chúng có thể quá nhỏ để duy trì như một doanh nghiệp hoàn chỉnh
- Dù vậy, mọi người vẫn tạo ra tiện ích, và người dùng nhận được lợi ích lớn từ những mảnh phần mềm nhỏ đó
- Việc khám phá cửa hàng tiện ích giống một chợ trời khu phố hơn là siêu thị
- Phần mềm lớn do các tập đoàn khổng lồ tạo ra không phải là cách duy nhất
Gốc rễ của tính mở trên web
- Từ buổi đầu của điện toán cá nhân, đã có một truyền thống triết học xem máy tính là phương tiện tương tác nơi người dùng có thể thêm ý tưởng của mình và tạo ra công cụ riêng
- Truyền thống này được phản ánh trong các hệ thống như Smalltalk, Hypercard và gần đây hơn là Dynamicland
- Khi tạo ra World Wide Web, Tim Berners-Lee đã hình dung một hệ thống nằm trong truyền thống đó
- Tầm nhìn của ông là “một hệ thống mà việc chia sẻ điều mình biết hoặc nghĩ cũng dễ như việc học điều người khác biết”
- Ông cho rằng trình duyệt web cũng phải là trình biên tập website, nhưng trình duyệt Mosaic lại trở nên phổ biến mà không có chức năng đó, và ông lấy làm tiếc
- Cuối cùng web đã trở thành nơi bất kỳ ai cũng có thể đăng ý kiến hay ảnh thông qua các nền tảng mạng xã hội
- Tuy nhiên, trong các ứng dụng như Facebook, người dùng phải đăng theo định dạng định sẵn và sử dụng theo cách ứng dụng quy định, bao gồm cả quảng cáo
- Tiện ích mở rộng trình duyệt cho phép vượt xa việc chỉ nhập vào hộp văn bản được cung cấp, để thay đổi sâu sắc cách bạn sử dụng bất kỳ ứng dụng nào trên web
- Nó mang lại tính phân tán, ngăn các công ty xây dựng website lớn quyết định mọi chi tiết của trải nghiệm người dùng
Hướng đi để làm tiện ích tốt hơn
- Cần có những nỗ lực bảo vệ người dùng để tiện ích độc hại không xâm phạm quyền riêng tư
-
Khả năng tiếp cận
- Hiện nay, để chuyển từ dùng tiện ích sang tự tạo tiện ích thì phải học khá nhiều về phát triển web
- Việc phát triển tiện ích ngay trong trình duyệt cũng không dễ
- Có thể hình dung một quá trình chuyển tiếp mượt mà từ chỉnh sửa website trong công cụ dành cho nhà phát triển đến xuất bản một tiện ích nhỏ
-
Tính tương thích
- Vì tiện ích móc nối vào website theo những cách không được hỗ trợ chính thức, các bản cập nhật website có thể tạm thời làm hỏng tiện ích
- Nhà phát triển tiện ích đôi khi phải vá gấp để theo kịp thay đổi
- Cần có cách để nhà phát triển website và nhà phát triển tiện ích kết nối ổn định mà không phụ thuộc vào API tiện ích tường minh
- Markup ngữ nghĩa sạch, CSS con người có thể đọc được và sourcemap là các thực hành hiện có giúp việc phát triển tiện ích dễ hơn
- Nếu sau khi phát hành phiên bản mới của phần mềm đám mây mà người dùng vẫn có thể tiếp tục dùng phiên bản cũ trong 3 tháng, nhà phát triển tiện ích sẽ có thêm thời gian cập nhật cho phiên bản mới
-
Quyền hạn
- Tiện ích web có thể thay đổi rộng khắp client của trình duyệt nhưng không thể đụng tới server
- Nếu server của ứng dụng mạng xã hội chỉ cung cấp endpoint xem bài đăng theo thứ tự thời gian, thì tiện ích trình duyệt không thể tìm kiếm mọi bài đăng theo từ khóa
- Nếu suy nghĩ lại ranh giới client-server, tiện ích có thể tạo ra những thay đổi sâu hơn
- Quyền mạnh hơn sẽ khiến các vấn đề bảo mật và quyền riêng tư khó hơn, nhưng cần tìm điểm cân bằng với việc coi khả năng mở rộng là một giá trị
Khả năng của nền tảng tiếp theo
- Beaker Browser và cộng đồng web phi tập trung đang khám phá cách để web hoạt động mà không cần server trung tâm
- Kiến trúc như vậy có thể trao cho người dùng quyền kiểm soát đầy đủ hơn để sửa đổi phía “server” của các ứng dụng web
- Dự án mới của Tim Berners-Lee là SOLID bao gồm nguyên tắc giúp người dùng có quyền sở hữu lớn hơn đối với dữ liệu của chính họ
- Khi quyền sở hữu dữ liệu tăng lên, người dùng có thể linh hoạt xử lý dữ liệu vượt ra ngoài phạm vi mà API server ứng dụng cho phép, thông qua tiện ích và các phần mềm khác
- Điện toán vẫn còn trẻ và các nền tảng đang thay đổi rất nhanh
- Các tiện ích mở rộng trình duyệt hiện đại và nền tảng smartphone mới chỉ xuất hiện khoảng 10 năm
- Các nền tảng tương lai sẽ mở đến mức nào là vấn đề mà chúng ta cần cùng nhau quyết định
- Tiện ích mở rộng trình duyệt là một ví dụ về nơi người dùng thường nhật hack phần mềm họ dùng và biến nó thành của riêng mình
Cập nhật năm 2024
- Nhìn lại bài viết năm 2019 sau 5 năm, đã có thêm một vài dự án liên quan
- Tôi đã tạo một tiện ích mở rộng trình duyệt phổ biến cho Twitter và viết một bài tổng kết về trải nghiệm dùng tiện ích để sửa các vấn đề trong phần mềm mình sử dụng hằng ngày
- Trong thời gian học tiến sĩ tại MIT cùng Daniel Jackson, tôi đã phát triển Wildcard, cho phép người không biết lập trình tạo tiện ích trình duyệt từ bảng tính
- Glen đang phát triển ExtensionPay, một nền tảng kiếm tiền dành cho những người muốn biến tiện ích mở rộng trình duyệt thành dự án bền vững
- Gần đây hơn, tại phòng nghiên cứu Ink & Switch, tôi đang làm việc hướng tới malleable software dựa trên AI
1 bình luận
Ý kiến trên Hacker News
Tôi là tác giả bài viết. Tôi viết bài này 5 năm trước, và kể từ đó niềm tin của tôi vào giá trị của phần mềm có thể tùy biến càng lớn hơn, nhưng một vài suy nghĩ đã thay đổi
Dù vậy, tôi cho rằng các cuộc thảo luận về tiện ích mở rộng đang quá tập trung vào bảo mật đến mức hy sinh các giá trị khác. Khả năng tùy biến trong một số trường hợp có thể quan trọng đến mức cần ưu tiên hơn bảo mật. Cũng có nhiều hướng giải quyết. Thay vì cài từ bất kỳ ai trên Internet, có thể trao đổi tiện ích trong các quan hệ tin cậy như đồng nghiệp hay bạn bè, hoặc chỉ dùng tiện ích do chính mình tạo. Lập trình có AI hỗ trợ có thể khiến việc tự tạo trở nên thực tế hơn, nhưng cũng phát sinh vấn đề bảo mật mới. Tôi cũng đã gặp những người có ý tưởng kiến trúc phần mềm giúp giảm căng thẳng cốt lõi này; ví dụ ở https://www.wildbuilt.world/p/inverting-three-key-relationsh...
Tại phòng nghiên cứu Ink & Switch nơi tôi đang làm việc, chúng tôi xây dựng phần mềm local-first: phần mềm cộng tác trong đó dữ liệu và mã nằm trên thiết bị của tôi. Ngoài các lợi ích như quyền riêng tư, tôi cho rằng vì dữ liệu và mã ứng dụng không bị khóa trên máy chủ, đây là nền tảng đúng đắn cho các tiện ích mở rộng mạnh mẽ hơn: https://www.inkandswitch.com/local-first/
Việc có thể tự tạo bàn phím tùy chỉnh trên Android là rất tuyệt, nhưng việc ai đó có thể thuyết phục ông bà của bạn cài một bàn phím có keylogger tích hợp thì hoàn toàn không hay chút nào. Tiện ích mở rộng trình duyệt luôn là một hệ sinh thái đầy phần mềm độc hại, và câu đùa rằng mỗi lần về nhà dịp Lễ Tạ ơn lại phải xóa thanh công cụ khỏi Internet Explorer của bố mẹ đã có từ khoảng năm 1999
“Vâng, bạn có thể đọc nội dung điện thoại của tôi. Với bạn thì đó là toàn bộ nội dung, tất cả chỉ có vậy. Chỉ là với tôi, nó chỉ là một thư mục, và là thư mục trống. Vì đây là điện thoại mới mà.”
“Vâng, đây là danh bạ của tôi. Xin lỗi vì gần như trống trơn. Chỉ có một số premium đắt tiền thôi. Hy vọng trụ sở chính của các bạn sẽ không gọi tới đó.”
“Vâng, đây là micro của tôi. Cảm ơn. Tôi bắt chước Rick Astley khá giỏi đấy.”
“Ảnh trên điện thoại à? Đây. Toàn là ảnh củ cải. Bạn thích không?”
Tôi đặc biệt quan tâm đến việc các công cụ CRDT đa dụng như Automerge hay Yjs trở thành định dạng tệp nền tảng cho phần mềm local-first, rồi gắn thêm các backend đồng bộ hóa và cộng tác có khả năng tương tác. Người dùng có thể trực tiếp truy cập dữ liệu nền bằng các công cụ tiêu chuẩn, và các tệp có thể được liên kết, nhúng, phân nhánh, hợp nhất với nhau. Có thể tạo ra một nền tảng hypermedia mới nơi mọi tài liệu đều có thể được chia sẻ, fork và chỉnh sửa theo thời gian thực. Tôi rất thích những gì Ink & Switch đang làm và mong chờ công bố tiếp theo của họ
Không có tính năng kiểu “đặt mã và manifest vào một thư mục thì trình duyệt sẽ dùng”. Thời greasemonkey cũ, khi nó chỉ tải các tệp thường từ thư mục con gm_scripts/ trong hồ sơ trình duyệt, nhờ cách phân phối đơn giản đó mà tôi đã tạo rất nhiều userscript. Khi ấy mở rộng website vừa vui vừa dễ, rồi Mozilla xóa sạch mọi thứ
Phân phối thực sự khủng khiếp. Tôi hoàn toàn không có ý định mỗi lần thay đổi mã do mình viết để dùng trên máy của mình lại phải gửi tiện ích lên đâu đó trên Internet để được ký. Hơn nữa, lần cuối tôi kiểm tra, công cụ ký là một ứng dụng NPM/node hơn 100MiB mà tôi phải tin tưởng, còn lớn hơn cả build kernel Linux
Năm 2024, bản thân khuôn khổ gọi là tiện ích mở rộng trình duyệt đã rất có vấn đề. Phần lớn tiện ích mở rộng trình duyệt, xét về tỷ trọng, là tiện ích của Google Chrome, và Google Chrome đang cho thấy rõ rằng không API nào là an toàn trong quá trình họ cố tăng doanh thu
Người tạo tiện ích bằng Chrome API cần hiểu rằng họ có thể đang đổ công sức vào một thứ mà một tập đoàn khổng lồ có thể vô tư giẫm nát. Tôi không muốn sống trong tình thế về mặt chiến lược đã thua sẵn như vậy, nên nghĩ rằng cuộc thảo luận nên xoay quanh tiện ích của Firefox. Firefox cũng không có thành tích tốt đẹp gì. Việc chuyển sang tương thích với Google Chrome vài năm trước đến giờ vẫn cực kỳ khó chịu. Dù vậy, đây vẫn là bên tốt hơn về chất khi phải đối mặt
Trong 10 năm, tôi đã dùng một thứ gọi là “Ad Limiter” trên cả Firefox lẫn Chrome, và mã nguồn cũng giống nhau. Năm ngoái Google siết chặt hơn với trình chặn quảng cáo và gửi các thông điệp mang tính đe dọa, nên tôi đã từ bỏ bản cho Chrome
Tất nhiên cũng có thể dùng API dành riêng cho một trình duyệt. Điều đó thật sự tệ, giống như tạo một trang web chỉ dành cho một trình duyệt. Mặc định là phải tương thích. Và vì mã nguồn tiện ích luôn có thể xem được, bạn có thể sửa thành phiên bản hoạt động tốt trên trình duyệt của mình rồi chia sẻ lại
Khá nhiều tiện ích trình duyệt phổ biến đã bị data broker mua lại và dùng để rút lịch sử duyệt web, nên khó có thể nói chúng bị đánh giá thấp. Mô hình bảo mật và quyền riêng tư của tiện ích đã, hoặc vẫn đang, khá tệ, vì vậy phải hết sức cẩn thận
Ví dụ, tôi biết một tiện ích chụp màn hình như Awesome Screenshot đã hút lịch sử duyệt web và gửi cho một data broker ở Israel. Những tính năng kiểu này có lẽ nên là tính năng mặc định của trình duyệt thì tốt hơn
Câu “nếu tôi không phải là khách hàng thì tôi chính là sản phẩm” đúng đến mức sáo mòn. Nhưng nếu tôi thực sự là khách hàng thì sao? Tôi nghĩ phần lớn sự mất niềm tin vào tiện ích trình duyệt là vì rất khó kiếm tiền trực tiếp từ chúng. Nếu bạn không kiếm được tiền từ tiện ích, rồi có ai đó đề nghị mua lại với một tấm séc khá ổn, thì rất khó từ chối, nhất là với tiện ích mà nhà phát triển còn phải gánh chi phí hỗ trợ. Tất nhiên, như gần như mọi người, tôi cũng có cái giá của mình, nhưng hiện giờ có lẽ phải là 7 chữ số USD, thậm chí 8 chữ số USD, và sẽ chẳng ai trả số tiền đó cho tiện ích của tôi. Vì là trả phí nên cơ sở người dùng tương đối nhỏ, và chính vì thế nó cũng không phải là cơ hội lớn cho việc thu thập dữ liệu hay các kế hoạch xấu xa
Tất nhiên ứng dụng desktop cũng có rủi ro, nhưng trong lịch sử, kiểu rò rỉ dữ liệu sau khi bị mua lại như thế này tương đối hiếm trên ứng dụng desktop. Đặc biệt trên macOS, ứng dụng đã ký được sandbox và không thể làm nhiều việc nếu không có quyền của người dùng
Tất nhiên nhiều tiện ích kiểu này là mã nguồn mở nên có thể audit. Nhưng tôi không có kỹ năng để phát hiện mã độc, nên tự hỏi liệu đây có thể là một use case tốt cho AI hay không. Tôi cũng muốn biết có ai có ý tưởng gì về việc tạo prompt tốt để phát hiện malware không
Tôi ước tiện ích mở rộng trình duyệt có quyền chi tiết hơn. Tuy nhiên, vấn đề xác minh liệu phần mềm có dùng quyền theo cách ác ý hay không là rất khó; cứ nhìn Obfuscated C Code Contest hay Underhand C Contest là thấy. Việc truyền đạt các quyền có sắc thái cho người dùng cũng khó. Phần lớn người dùng không đọc hoặc không hiểu nội dung kỹ thuật, và rất dễ bị dẫn dắt sai
Có một mẹo để dùng an toàn hơn khi thử tiện ích mở rộng trên Chrome. Vào Profiles > Add profile > Continue without account để tạo một hồ sơ riêng, rồi cài tiện ích mong muốn vào đó; như vậy nó sẽ được cách ly hoàn toàn với các tab đã đăng nhập, lịch sử, cookie, v.v. của hồ sơ thông thường. Tương tự, cũng có thể chạy Chrome Beta hoặc Chrome Canary song song với Chrome thường để chuyên cài tiện ích
Ví dụ, bạn có thể cài hàng chục tiện ích phát triển web tiềm ẩn rủi ro vào hồ sơ này, và tách chúng như một sandbox khỏi hồ sơ dùng cho ngân hàng cá nhân hay đăng nhập website công ty. Cách này không thực tế cho mọi tiện ích, nhưng với phát triển web thì tôi làm vậy, còn hồ sơ cá nhân chỉ dùng vài tiện ích
Quyền mà tôi thực sự muốn yêu cầu trong tiện ích trình duyệt tôi bán là “chỉ có thể quan sát lưu lượng mạng gửi và nhận trong tab của chính nó”, nhưng thực tế lại phải yêu cầu quyền “đọc và ghi mọi dữ liệu”. Vì vậy tôi chia sẻ mẹo trên trong phần mô tả: https://chromewebstore.google.com/detail/checkbot-seo-web-sp...
Hy vọng tính minh bạch sẽ là một cách vượt qua rào cản niềm tin này
[1] Nhấp vào ‘Details’ của tiện ích, đổi tùy chọn ‘Allow this extension to read and change all your data on websites you visit’ thành ‘On specific sites’, rồi thêm trang vào danh sách cho phép là được
“Tiện ích mở rộng trình duyệt gợi lại cảm giác kiểm soát sâu cách mình dùng máy tính” — chắc người dùng Linux sẽ muốn lên tiếng vài lời
Nói rộng hơn, điều này khá giống câu hỏi tôi từng muốn bàn trong bài viết vài năm trước có tên “Is Open Source a diversion from what users really want?”. Sự hào hứng với cách “hack” phần mềm mà không đụng tới hệ thống build dường như lớn hơn rất nhiều so với quyền truy cập hoàn toàn, mở và về lý thuyết là vô hạn mà FLOSS cung cấp. Có vẻ có những lý do hiển nhiên cho điều đó, nhưng vẫn hơi đáng thất vọng
Tôi đã bàn ở đây khi đối chiếu cách Reaper có thể script nhưng là mã nguồn đóng với cách Ardour vừa có thể script vừa là mã nguồn mở: https://discourse.ardour.org/t/is-open-source-a-diversion-fr...
Có thể làm những trò hack thú vị bằng LD_PRELOAD và các thứ tương tự, nhưng hoàn toàn không đạt tới độ linh hoạt và dễ tiếp cận của tiện ích trình duyệt. Bạn có quyền sửa mọi phần mềm theo ý mình, nhưng ma sát để thực sự làm vậy là tương đối lớn
Tôi đã tạo một tiện ích Chrome được đề xuất trên Chrome Web Store[1], và thật sự đáng lo khi số lượng các data broker đáng ngờ gửi đề nghị mua tiện ích của tôi rồi nhồi spyware vào đó
Một lập trình viên ngây thơ có thể tạo ra thứ hay ho, bán nó vì nghĩ sẽ có ai đó duy trì, nhưng thực tế lại có thể gây nguy hiểm cho người dùng. Google có vẻ làm khá tốt việc rà soát cách dùng quyền, nhưng cũng có những tiện ích như của tôi cần truy cập mọi thứ trên trang. Chỉ cần tưởng tượng data broker có thể làm gì với nó là đủ. Cần cẩn thận khi cài đặt
[1] https://chromewebstore.google.com/detail/css-selector-helper...
Tôi nghĩ điều cần nhất là xem mã nguồn cho các tiện ích trình duyệt cài từ store. Cần có thể xem mã nguồn dễ dàng và trích xuất tiện ích trình duyệt thành một thư mục
Cũng cần dễ dàng biết nó truy cập những trang web nào và đã sửa đổi gì. Mã bị rút gọn hoặc mã hóa trong tiện ích nên bị cấm, và mã phải rất dễ đọc. Ví dụ, tiện ích này nói rằng nó “ghi lại hoạt động của người dùng”, nhưng rất khó biết thực tế đó là gì: https://chromewebstore.google.com/detail/coffeelings/hcbddpp...
Có thể xem danh sách đầy đủ các website trong popup cài đặt tiện ích. Chrome Web Store vốn đã cấm làm rối mã. Việc rút gọn mã thì được phép, vì không có cách có ý nghĩa nào để ép chất lượng tên biến
Nó sẽ không giúp được với mã bị cố ý làm rối, nhưng sẽ hữu ích cho nghiên cứu bảo mật và quyền riêng tư đối với phần lớn tiện ích
Dù không phải tiện ích hoàn chỉnh, userscript và style người dùng làm được khá nhiều việc, và cũng có các tiện ích cho phép mọi người tạo và dùng chúng ngay trong trình duyệt. Ví dụ là Tampermonkey[0] và Stylus[1]
Dù không làm được nhiều như tiện ích, tôi vẫn nghĩ chúng cực kỳ quan trọng
[0] https://www.tampermonkey.net/
[1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...
Tôi cũng dùng để chuyển hướng từ chế độ xem YouTube “short” sang chế độ xem video thông thường, và loại bỏ khoảng trống ngớ ngẩn bên phải thanh cuộn của Gmail
Tôi không làm JavaScript/TypeScript nhưng có lập trình, dùng rất nhiều tiện ích, và tự xem mình là power user sẽ tuyệt đối không dùng trình duyệt nào không có hệ sinh thái tiện ích Chrome/Firefox. Tôi cũng từng làm theme Chrome và VSCode, nhưng vẫn đang ở điểm này. Nếu thích hồng/xanh ngọc thì có ở đây: https://marketplace.visualstudio.com/items?itemName=mikejk8s...
Chỉ nhìn prompt của Chrome thì tôi hoàn toàn không biết tiện ích có thể làm gì, đọc gì, xem gì, truy cập gì. “Cho phép truy cập dữ liệu trên mọi website” có thật sự là mọi dữ liệu không? Cả những gì tôi nhập? Nó có biết tôi đi từ URL này sang URL khác không? Hay chỉ đọc tài nguyên? Có API Chrome nào giới hạn quyền truy cập và tôi có thể xem được không? Tôi không biết thực sự mình nên lo về điều gì
Tôi dùng một tiện ích phóng to video có thể phóng to bất kỳ video nào trên bất kỳ website nào; vậy tôi có phải tự audit từng tiện ích để chắc rằng nó không sao chép dữ liệu của tôi đi đâu đó không? Tôi hoàn toàn không biết, và người dùng không rành kỹ thuật thì làm sao biết được chuyện này
Tôi sẽ đặc biệt cẩn thận với các sản phẩm startup kiểu ghi màn hình/ghi phiên. Nếu không vì lý do nào khác thì vì chúng có thể đặc biệt dễ bị tấn công chuỗi cung ứng
Vì vậy danh sách của tôi chỉ gồm các tiện ích dùng một lần do tôi tự làm, các tiện ích lớn nổi tiếng, hoặc những thứ tôi đã tự audit mã
Tôi thích bookmarklet hơn. Vì chúng dễ chỉnh sửa, không hoạt động cho đến khi được bấm, chạy trên mọi trình duyệt, dùng được cả trên di động, và tích hợp tốt vào UI
Có thể di chuyển tùy ý, đặt vào bất kỳ thư mục bookmark nào, và gán cả phím tắt. Tôi đã làm một trình biên tập giúp chuyển đổi dễ dàng giữa mã sạch và bookmarklet: https://www.gibney.org/bookmarklet_editor
Không biết có bookmarklet hay nào đáng chia sẻ không