Lưu ý: Cập nhật hữu ích ở cuối bài viết; hãy xem nhé.
Firefox 57 đã ra. Và Noscript Security Suite 10, phiên bản WebExtension đầu tiên của tiện ích mở rộng Firefox phổ biến và thành công này cũng đã ra. Tiện ích mở rộng tái thiết kế mang đến một loạt thay đổi và chấn thương. Vì vậy nếu bạn cảm thấy ngạc nhiên, bị lấy làm bất ngờ hoặc chỉ bối rối bởi cách Noscript hoạt động sau chuỗi 5.x, tôi sẽ cố gắng gỡ rối một phần sương mù trong hướng dẫn này.
Lưu ý rằng đây là phiên bản đầu tiên của hướng dẫn này – sẽ có cập nhật và follow-up (tiếp theo), khi Noscript chắc chắn sẽ thay đổi và cải thiện. Tôi sẽ cố gắng cung cấp giải thích và gợi ý đơn giản nhất, để hành trình của bạn, và của tôi, có thể dễ chịu hơn. Tôi tin Noscript là một phần thiết yếu của Web, lý do chính vẫn dùng Firefox, và đây là lý do tôi quyết định biên soạn hướng dẫn này. Theo dõi tôi.
Noscript một cái nhìn
UI mới hoàn toàn khác chuỗi 5.x trước. Noscript cổ điển cũ có phân cấp dọc, với mỗi trang web liệt kê riêng biệt, và bạn có thể cho phép hoặc tạm cho phép các mục. Menu hệ thống sâu hơn cho phép kiểm soát chi tiết hơn, bao gồm whitelist (danh sách trắng), chặn phần tử cụ thể, và hơn thế.
NSS 10 đi kèm lưới giống ma trận (matrix-like grid), tương tự tiện ích mở rộng uMatrix, mà chúng ta sẽ bao phủ riêng. Trang web được liệt kê trên các dòng riêng biệt, và hiện có năm nút bên cạnh tên domain. Nếu bạn nhấp vào bất kỳ cái nào, bạn sẽ toggle (chuyển đổi) phạm vi cụ thể cho domain cụ thể đó, và cũng có thể xem chi tiết.
Phạm vi (Scopes)
Các phạm vi như sau:
Default – theo mặc định bất kỳ trang web nào không được bao phủ trong phạm vi nào khác, sẽ được khớp với cái này. Tám danh mục phần tử có sẵn sẽ được bật/tắt. Mặc định là cho phép script, object, media, frame, fetch, và other. Font và webgl không được cho phép.
Lưu ý, mặc định là thực sự CHO PHÉP script.
Vậy đây là một khác biệt lớn so với Noscript 5.x, và đây là điều bạn có thể và nên thay đổi. Tôi sẽ chỉ cho bạn cách đạt được điều này ngay. Vui lòng kiên nhẫn.
Trusted (Tin cậy) cho phép mọi thứ cho trang web liệt kê.
Ngược lại, Untrusted (Không tin cậy) không cho phép bất kỳ phần tử nào cho trang web liệt kê.
Custom (Tùy chỉnh) là danh mục thứ tư, và nó cho phép bạn toggle trạng thái của bất kỳ một trong tám phần tử cho domain cụ thể.
Biểu tượng ổ khóa (padlock symbol) cho phép bạn khớp quy tắc trong bốn phạm vi trước đó hoặc với trang web được phục vụ qua đường hầm an toàn (SSL/TLS) hoặc bất kỳ (HTTP). Điều này có nghĩa là nếu bạn vào https:// so với https:// của cùng domain, nếu chúng tồn tại, hành vi có thể khác nhau.
Cách thức hoạt động?
Vâng, điều này hoạt động hoàn toàn ngược lại chuỗi 5.x. Ở đó, quyền hạn là per-site (mỗi trang). Ở đây, vì định dạng kiến trúc dữ liệu khác nhau được lưu trong backend, quyền hạn là per-scope (mỗi phạm vi), và trang web được bao gồm trong mỗi cái.
Noscript 5.x – site, permissions (trang web, quyền)
Noscript 10.x – scope, permissions, site, override permissions (phạm vi, quyền, trang web, ghi đè quyền)
Điều này gây nhầm lẫn, vì nếu bạn thay đổi mặc định cho một trang cụ thể, nó thực sự thay đổi mặc định cho TOÀN BỘ phạm vi. Điều này bị hỏng theo thiết kế, và nên được thay đổi sớm.
Bạn có thể test bằng cách vào một domain – ví dụ dedoimedo.com, và sau đó tạo quy tắc custom cho nó, cho phép script. Nếu bạn vào trang khác, bạn sẽ biết rằng cùng quy tắc sẽ được áp dụng, vì chỉnh sửa của bạn ảnh hưởng đến toàn bộ phạm vi.
Tạm thời cho phép (Temporarily allow)
Cách khắc phục cho vấn đề này NÊN là dùng tùy chọn temporarily allow (tạm cho phép), mà nó tồn tại. Dưới Custom, có nút nhỏ giống đồng hồ. Khi bạn chọn trạng thái toggle mong muốn cho tám phần tử, nhấn nút này. Điều này nên làm quyền tạm thời, và chúng nên revert (quay lại) về trạng thái gốc khi bạn đóng và mở lại trình duyệt.
Chú ý biểu tượng đồng hồ bên phải văn bản đọc CUSTOM.
Thật đáng tiếc, tại thời điểm này, dường như chế độ temp-allow không hoạt động. Cho dù bạn nhấn nút đồng hồ trước rồi đặt quyền hay đặt quyền rồi nhấn nút, khi khởi động lại trình duyệt, thay đổi của bạn sẽ đã trở thành vĩnh viễn cho toàn bộ phạm vi custom. Điều này dường như là bug và cần được sửa.
Tạm thời cho phép, tùy chọn 2 (cập nhật)
Một anh tên Krusty đề xuất mô hình sau để tạm cho phép trang. Thay vì dùng phạm vi custom, dùng phạm vi TRUSTED (Tin cậy), và sau đó nhấn biểu tượng đồng hồ nhỏ để tạm cho phép, không làm phiền các phần tử cụ thể. Bạn có thể tải lại thủ công hoặc đóng cửa sổ overview, và trang sẽ tự tải lại. Điều này hoạt động cho hai trên ba trường hợp cho tôi, như trong quyền tạm thời biến mất sau khi bạn khởi động lại trình duyệt, vậy đó đã là tiến bộ theo đúng hướng. Cảm ơn, Krusty.
Tùy chọn & cấu hình JSON
Nếu bạn mở menu options/preferences, bạn có một tập tinh chỉnh khá hạn chế. Nếu bạn đã di chuyển từ 5.x, bạn nên có tất cả trang web whitelisted của bạn đó. UI cho phép bạn toggle trạng thái của mỗi cái, nhưng không xóa chúng. Ở đây bạn có thể đổi trạng thái mặc định của chúng giữa bốn phạm vi, hoặc hoàn toàn xóa chúng khỏi danh sách.
Debug
Ở dưới cùng, có nút debug. Chọn nó, và nó sẽ mở một trình soạn thảo văn bản nhỏ, bên trong đó bạn có thể thay đổi cấu hình JSON cho Noscript. Bạn có thể chỉnh trạng thái mặc định của mỗi phạm vi cũng như xóa mục whitelisted. Ví dụ:
{
"DEFAULT": {
"capabilities": [
"frame",
"other",
"fetch",
"media",
"object"
]
},
"TRUSTED": {
"capabilities": [
"script",
"object",
"media",
"frame",
"font",
"webgl",
"fetch",
"other"
]
},
Ở trên, tôi đã xóa dòng "script", từ phạm vi DEFAULT. Bạn cũng có thể làm điều đó qua UI. Khi bạn chọn bất kỳ domain nào, bỏ tích hộp script, và điều này sẽ áp dụng cho tất cả trang web được đánh dấu với tùy chọn phạm vi DEFAULT. Không trực quan, tôi biết. Tương tự, mục domain:
"sites": {
"trusted": [
"§:addons.mozilla.org",
"§:afx.ms",
"§:ajax.aspnetcdn.com",
"§:ajax.googleapis.com",
"§:bootstrapcdn.com",
"§:code.jquery.com",
Nếu bạn không muốn tin cậy một số này, chỉ cần xóa chúng. Như bạn thấy dưới, phạm vi UNTRUSTED không có bất kỳ phần tử (capabilities) nào, cũng không có sites lúc này, và custom cũng rỗng.
Và đây là danh sách sites đã được làm sạch:
Làm việc với Noscript 10 & gợi ý
Lúc này, điều này khá cồng kềnh, tôi phải nói. Toggle trạng thái trang web mất nhiều thời gian hơn nhiều so với middle-click (nhấn chuột giữa) đơn giản của Noscript 5.x. Điều này nên được đưa lại như một tính năng. Hơn nữa, vì bạn ảnh hưởng toàn bộ phạm vi và không chỉ trang web, thay đổi quyền hạn trở nên vô nghĩa lớn. Temp-allow không hoạt động lúc này.
Bạn có tự động tải lại trang web, nhưng tổng thể, luồng (flow) kém streamlined (mượt mà) hơn nhiều so với trước. Tôi tin điều này nên thay đổi khi các phiên bản Noscript mới được phát hành. Tôi nghĩ Giorgio Maone nên giới thiệu nhiều file cấu hình cho mỗi phạm vi, và cũng giữ cấu hình theo định dạng sau:
{
"DOMAIN": {
"capabilities": [
"frame",
"other",
"fetch",
"media",
"object"
]
},
Bất cứ gì không khớp, sau đó liên kết với DEFAULT (bất cứ gì đó là). Temp-allow sẽ bỏ qua tên domain và dùng phạm vi mới gọi là TEMP-ALLOW, bị xóa khi mỗi lần khởi động lại trình duyệt (hoặc thay đổi thủ công).
Tất nhiên, cũng có cân nhắc thẩm mỹ. UI nên có chữ to hơn và khoảng cách nhiều hơn giữa các phần tử. Mỗi domain nên có give toggles – giữa các phạm vi hiện tại và phạm vi MỚI gọi là temp allow. Cũng nên có nút toàn cục cho phép tất cả. Cấu hình phạm vi nên được làm trong cửa sổ options chính.
Kết luận
Noscript 10 có thể đã được vội ra quá sớm, để kịp lịch phát hành Firefox Quantum. Nó không cảm giác như sản phẩm hoàn chỉnh, và nó làm nổi bật hỗn loạn ý tưởng WebExtensions thực sự là. Tôi tự tin Noscript sẽ tiến hóa và thay đổi và cải thiện, và nó sẽ khớp hành vi cũ, về mặt chức năng nếu không phải giao diện.
Những điều quan trọng nhất lúc này là có thể dùng hàm temporarily allow cho tất cả trang web, và không làm ảnh hưởng cài đặt phạm vi với tinh chỉnh per-site. Phân cấp của JSON nên do đó được điều khiển bởi thành phần hạt nhỏ nhất, và đó là domain bạn đang truy cập. Vâng, đó là tất cả cho hướng dẫn đầu tiên. Nếu bạn có câu hỏi, hãy hỏi, tôi sẽ thêm câu trả lời ở đây. Cập nhật và tin tức sắp tới, vậy hãy theo dõi cho phiên bản 2, và bất cứ thứ gì liên quan khác trên chủ đề này.
Cập nhật – 23 tháng 11, 2017:
Vâng, trước khi tôi viết phiên bản 2 của hướng dẫn này, tôi cảm thấy thận trọng hơn thêm một vài cập nhật khá quan trọng vào trang này. Chỉ một ngày sau khi tôi xuất bản bài, Giorgio Maone đã cập nhật tiện ích mở rộng Noscript, và nó đã trông streamlined (mượt mà) và hiệu quả hơn nhiều.
UI mới và tái thiết kế vẫn giữ bốn danh mục, nhưng quan trọng nhất, nó có thêm nút temporarily allow, khả năng thu hồi quyền tạm thời, và biểu tượng riêng mở settings. Bên cạnh một cú click thêm – Noscript 5.x cho phép bạn temp-allow tất cả qua middle-click trên biểu tượng tiện ích – hành vi dường như chủ yếu giống các phiên bản trước. Vẫn còn một vài sắc thái mảnh, nhưng đây là tiện ích mở rộng chúng ta yêu, quan tâm và cần để bảo chứng dùng Firefox. Đây là một phát triển tuyệt vời. Hãy theo dõi thêm.
Cheers.