Tiếng Việt

Những gì Bộ công cụ dữ liệu dành cho nhà phát triển không thể làm được

Mọi tiện ích ở đây đều có lợi thế. Trang này cho biết mỗi điểm dừng ở đâu, tại sao và nên sử dụng cái gì thay thế - vì vậy bạn sẽ tìm hiểu trước khi phụ thuộc vào nó chứ không phải sau đó.

Những ràng buộc áp dụng cho mọi thứ

Tất cả quá trình xử lý diễn ra trong một tab trình duyệt, sử dụng bộ nhớ của thiết bị của bạn. Đó là điều khiến tuyên bố về quyền riêng tư trở thành sự thật và nó cũng là nguồn gốc của mọi giới hạn kích thước bên dưới. Mỗi tiện ích giới hạn đầu vào của nó một cách rõ ràng và từ chối công việc quá khổ bằng một thông báo rõ ràng thay vì đóng băng trang.

Hai tính năng cần có bối cảnh an toàn — https:// hoặc localhost — vì đó là nơi duy nhất các trình duyệt hiển thị Web Crypto API: băm SHA và tạo UUID. Được mở trên HTTP đơn giản trên địa chỉ LAN, cả hai sẽ cho bạn biết chúng không khả dụng. Việc triển khai viết tay cũng không thể thay thế được vì trình duyệt của chính nó mới là thứ đáng tin cậy.

Không có nhân viên dịch vụ nên lần tải đầu tiên cần có kết nối mạng. Sau đó, bộ công cụ không yêu cầu gì cả.

JSON

Chỉ nghiêm ngặt RFC 8259. Nhận xét, dấu phẩy ở cuối, chuỗi trích dẫn đơn, khóa không trích dẫn và NaN hoặc Infinity đều bị từ chối — đây là các tính năng theo nghĩa đen của đối tượng JSON5 hoặc JavaScript, không phải JSON. Trình xác thực đặt tên cho cái mà nó tìm thấy, vì vậy việc từ chối ít nhất có thể thực hiện được.

Các số được phân tích cú pháp thành IEEE-754 tăng gấp đôi, đó là điều JSON.parse thực hiện. Các số nguyên vượt quá 2^53 sẽ mất độ chính xác khi tính cả hai chiều. Nếu bạn đang xử lý số nhận dạng lớn thì chúng cần phải là chuỗi trong chính JSON — không có cách nào để bất kỳ công cụ JavaScript nào khôi phục giá trị mà định dạng không thể biểu thị.

Thứ tự khóa được giữ nguyên như văn bản và cách sắp xếp tùy chọn chỉ áp dụng cho các khóa đối tượng. Thứ tự mảng không bao giờ thay đổi vì việc sắp xếp lại mảng sẽ thay đổi dữ liệu hơn là cách trình bày của nó.

Những tài liệu có hơn 8 triệu ký tự sẽ bị từ chối.

Trình chuyển đổi cú pháp

Chín chuyển đổi hướng - JSON ĐẾN YAML, YAML ĐẾN JSON, JSON ĐẾN XML, XML ĐẾN JSON, JSON ĐẾN TOML, TOML ĐẾN JSON, YAML ĐẾN TOML, TOML ĐẾN YAML, JSON ĐẾN CSV. Bất cứ điều gì không có trong danh sách đó đều bị từ chối bằng một câu đặt tên cho tuyến đường tồn tại. Tập hợp đầy đủ các quy ước có trên trang bộ chuyển đổi; phần này nêu rõ nơi chuyển đổi dừng lại.

CSV được viết và không bao giờ được đọc. Đọc nó có nghĩa là đoán một dấu phân cách, một phương ngữ trích dẫn, một hàng tiêu đề và một loại cho mỗi ô - bốn lần đoán mà một trình chuyển đổi lặng lẽ mắc sai lầm.

Nhận xét bị mất theo mọi hướng, ở mọi định dạng có chúng.

YAML được tải với một lược đồ bị hạn chế chỉ có thể tạo ra dữ liệu có hình dạng JSON. Thẻ tùy chỉnh và thẻ theo ngôn ngữ cụ thể — !!js/function, !!python/object/apply, !!binary, !!timestamp, !!set, !!omap — đều bị từ chối. Đó là cố ý: một trình tải xây dựng những cái đó là một hàm tạo đối tượng tùy ý.

Trong lược đồ JSON mặc định, "~" và giá trị trống là các chuỗi chứ không phải null và "có" là chuỗi "có". Tùy chọn lược đồ cốt lõi giải quyết những vấn đề đó theo cách mà hầu hết mọi người mong đợi. Cả hai đều an toàn; chúng khác nhau trong cách giải thích vô hướng và công cụ này giải thích cái nào ở điểm được lựa chọn. Cả hai đều không đọc NO là sai — đó là hành vi YAML 1.1 và đây là YAML 1.2.

Luồng nhiều tài liệu YAML trở thành một mảng tài liệu vì không có định dạng nào khác ở đây có luồng. Các neo và bí danh được giải quyết thay vì giữ nguyên, bí danh đệ quy bị từ chối và một tài liệu mở rộng vượt quá một triệu giá trị sau khi bí danh của nó được theo sau sẽ bị từ chối — mẫu YAML "tỷ tiếng cười". Khóa ánh xạ lặp lại sẽ giữ giá trị cuối cùng và công cụ sẽ cho biết như vậy.

YAML vô cực và NaN không có đại diện ở bất kỳ định dạng đích nào. Thay vì để JSON.stringify âm thầm ghi giá trị rỗng, công cụ này sẽ chuyển đổi và cảnh báo bạn rằng điều đó đã xảy ra.

Một tài liệu XML chứa DOCTYPE bị từ chối hoàn toàn, bao gồm cả những tài liệu vô hại, do đó không thể giải quyết được thực thể bên ngoài nào và không thể mở rộng chuỗi thực thể nào. Không có tùy chọn để cho phép nó. XML nội dung hỗn hợp sẽ mất vị trí của văn bản so với các phần tử con, không thể phân biệt một phần tử lặp lại với một phần tử không lặp lại và mọi giá trị đều là một chuỗi trừ khi suy luận kiểu được bật.

TOML có bốn loại thời gian mà JSON, YAML và XML không có. Mỗi chuỗi trở thành chuỗi RFC 3339 mà nó được viết dưới dạng, do đó, một chuyến đi khứ hồi TOML sẽ thay đổi các giá trị đó thành chuỗi; không có con đường lossless. TOML không có giá trị rỗng, do đó, các khóa rỗng sẽ bị loại bỏ khỏi đầu ra TOML. Gốc của tài liệu TOML phải là một bảng, do đó, mảng hoặc đại lượng vô hướng JSON hoàn toàn không thể trở thành TOML. Các số nguyên qua 2^53 trở thành chuỗi thay vì được làm tròn âm thầm.

CSV không thể phân biệt chuỗi trống với chuỗi rỗng. Các giá trị lồng nhau được làm phẳng thành các tên cột có dấu chấm, do đó, khóa đã chứa dấu chấm sẽ tạo ra một tên mơ hồ được cảnh báo thay vì thoát. Các ô văn bản bắt đầu bằng =, +, -, @, tab hoặc dấu xuống dòng có tiền tố là dấu nháy đơn vì bảng tính thực thi chúng dưới dạng công thức.

Dữ liệu nhập được giới hạn cho mỗi định dạng: 8 triệu ký tự cho JSON, 4 triệu cho XML, 2 triệu ký tự cho YAML và TOML. Đầu ra CSV bị giới hạn ở 100,000 hàng và 2,000 cột.

Base64

Chỉ văn bản. Không có tệp tải lên ở đây: để mã hóa tệp, bạn cần phải đọc tệp đó và bộ công cụ này được xây dựng xung quanh một hộp văn bản. Sử dụng một công cụ định hướng tệp cho việc đó.

Quá trình giải mã tạo ra văn bản khi các byte hợp lệ UTF-8 và báo cáo lỗi rõ ràng khi chúng không hợp lệ — tại thời điểm đó, chế độ xem byte sẽ hiển thị cho bạn mã hex. Tải trọng nhị phân tùy ý không phải là văn bản và giả vờ khác đi sẽ làm hỏng nó.

Những nội dung nhập có hơn 4 triệu ký tự đều bị từ chối.

URL mã hóa

Ba quy tắc được cung cấp — thành phần, toàn bộ-URL và biểu mẫu — là ba quy tắc mà nền tảng xác định. Các biến thể dành riêng cho ứng dụng (AWS chuẩn hóa SigV4, OAuth 1.0a mã hóa phần trăm) khác nhau ở một số điểm nhỏ và không được cung cấp.

Thanh tra URL cần có URL tuyệt đối với một sơ đồ. Một đường dẫn tương đối không thể được phân tách thành máy chủ, đường dẫn và truy vấn vì nó không có chúng.

Tên miền quốc tế hóa được hiển thị khi trình duyệt chuẩn hóa chúng, có thể là mã trừng phạt thay vì tập lệnh gốc.

HTML thực thể

Bảng thực thể được đặt tên bao gồm tập hợp con thực tế — các ký tự quan trọng trong đánh dấu, kiểu chữ, tiền tệ, mũi tên, toán học, tiếng Hy Lạp và tiếng Latinh-1 — không phải tất cả các tham chiếu được đặt tên 2,231 HTML5. Những cái tên bên ngoài nó sẽ được liệt kê cho bạn và để lại chính xác như đã viết, bởi vì việc tạo ra một ký tự sẽ tệ hơn là để nguyên văn bản.

Cần có dấu chấm phẩy kết thúc. HTML5 chấp nhận một số tham chiếu kế thừa không có tham chiếu, nhưng việc giải quyết chính xác các tham chiếu đó phụ thuộc vào đánh dấu xung quanh, điều mà một công cụ văn bản độc lập không có.

Giải mã là một lần duy nhất, vì vậy "&amp;lt;" giải mã thành văn bản "&lt;" thay vì "<". Điều đó đúng: việc mã hóa kép có lẽ là có chủ ý.

Văn bản thoát này cho HTML. Nó không phải là công cụ khử trùng HTML — nó sẽ không lấy một tài liệu chứa đầy dấu vết và loại bỏ các phần nguy hiểm. Đó là một công việc khác và khó khăn hơn nhiều.

Dấu thời gian

Phát hiện đơn vị là một phương pháp phỏng đoán: 10^11 trở lên được đọc dưới dạng mili giây. Nó luôn được hiển thị và luôn có thể ghi đè, nhưng đó chỉ là phỏng đoán về đầu vào không rõ ràng.

Dấu thời gian micro giây và nano giây mà một số cơ sở dữ liệu phát ra không được phát hiện. Trước tiên hãy chia cho 1,000 hoặc 1,000,000.

Chuyển đổi sử dụng thời gian POSIX, không có giây nhuận — 23:59:60 không tồn tại ở đây cũng như không tồn tại trong bất kỳ dấu thời gian Unix nào.

Kết xuất theo thời gian cục bộ sử dụng vùng được định cấu hình của trình duyệt của bạn. Bạn không thể chọn vùng IANA tùy ý để hiển thị.

Các giá trị vượt quá khoảng ±273,790 năm kể từ kỷ nguyên vượt quá những gì JavaScript ngày có thể biểu thị và bị từ chối.

UUID

Chỉ phiên bản 4 (ngẫu nhiên) được tạo. Các phiên bản 1 và 6 cần có địa chỉ MAC và chuỗi đồng hồ ổn định; phiên bản 7 cần một bộ đếm đơn điệu để có giá trị; các phiên bản 3 và 5 dựa trên tên và cần một không gian tên cũng như hàm băm mà trình duyệt không hiển thị cho mục đích này.

Trình xác thực nhận ra dạng văn bản chuẩn và phiên bản cũng như biến thể của báo cáo. Nó không thể cho bạn biết liệu UUID có được tạo tốt hay không — phiên bản-4 UUID được tạo ra từ một trình tạo yếu trông giống hệt một trình tạo tốt.

Một lô được giới hạn ở giá trị 500.

Không có Web Crypto thì không có gì được tạo ra. Việc quay lại Math.random() sẽ tạo ra các mã định danh có thể dự đoán được, do đó, công cụ sẽ từ chối thay thế.

SHA băm

Chỉ SHA-1, SHA-256, SHA-384 và SHA-512, vì đó là những gì SubtleCrypto triển khai. MD5 vắng mặt do cần thiết và do lựa chọn.

SHA-1 hiện diện để đảm bảo khả năng tương tác cũ và được gắn nhãn là bị hỏng về mặt mật mã ở mọi nơi nó xuất hiện. Không sử dụng nó cho bất cứ điều gì có vấn đề bảo mật.

Chỉ văn bản - không băm tệp, vì lý do tương tự base64 không có tệp đầu vào.

Không HMAC, không dẫn xuất khóa, không băm mật khẩu. Mật khẩu cần chức năng chậm, nặng, tốn nhiều bộ nhớ như Argon2id, scrypt hoặc bcrypt; một hàm băm đa năng nhanh là một công cụ sai lầm và việc sử dụng nó là một sai lầm nghiêm trọng chứ không phải là một lỗi nhỏ.

Khác biệt văn bản

Chỉ so sánh cấp độ dòng. Không có phần đánh dấu cấp độ từ hoặc cấp độ ký tự trong một dòng đã thay đổi.

Một dòng được sửa đổi xuất hiện dưới dạng một dòng bị xóa cộng với một dòng bổ sung, đó là cách tập lệnh chỉnh sửa dựa trên dòng thể hiện nó.

Các dòng đầu và cuối giống hệt nhau sẽ được cắt bớt trước khi so sánh, do đó, các tệp lớn khác nhau ở một nơi sẽ nhanh chóng. Phần còn lại được giới hạn ở 2,000 dòng khác nhau trên mỗi bên, vượt quá giới hạn đó công cụ sẽ từ chối thay vì cố gắng phân bổ sẽ giết chết tab.

Không có sự hợp nhất ba chiều, không có ứng dụng vá lỗi và không có nhận thức về cú pháp.

JWT giải mã

Chỉ giải mã. Chữ ký không bao giờ được xác minh và điều này sẽ không thay đổi - lý do được nêu trong hướng dẫn về mã thông báo.

Không thể giải mã mã thông báo được mã hóa (JWE, năm phân đoạn) nếu không có khóa. Công cụ xác định chúng và dừng lại.

Mã thông báo lồng nhau không được tự động mở; giải mã mã thông báo bên trong một cách riêng biệt.

Các xác nhận quyền sở hữu bên ngoài bộ đã đăng ký của RFC 7519 được hiển thị mà không cần giải thích vì ý nghĩa của chúng tùy thuộc vào từng ứng dụng.

Mã thông báo trên 200,000 ký tự bị từ chối.

Trình chỉnh sửa HTML WYSIWYG

Trình dọn dẹp là danh sách cho phép dành cho kết quả đầu ra của chính biên tập viên này, được xây dựng trên trình mã thông báo chuỗi thay vì trình phân tích cú pháp HTML5 đầy đủ. Đây không phải là bộ lọc XSS có mục đích chung và việc sử dụng nó như một bộ lọc sẽ là một sai lầm: trình duyệt có thể phân tích cú pháp tải trọng không đúng định dạng có chủ ý thành một cây khác với cây mã thông báo này. HTML không đáng tin cậy thuộc về trình khử trùng phía máy chủ chạy dựa trên trình phân tích cú pháp thực.

Chỉ các phần tử được liệt kê còn tồn tại: đoạn văn, tiêu đề, điểm nhấn, danh sách, liên kết, trích dẫn, mã và một số thẻ nội tuyến. Mọi thứ khác đều được mở ra, vì vậy văn bản của nó vẫn còn và thẻ của nó thì không. Hình ảnh, bảng biểu, màu sắc, phông chữ và kiểu nội tuyến đều không có và không có cách nào để thêm chúng.

script, style, iframe, object, embed, form, svg, math và các phần tử văn bản thô hoặc nội dung nước ngoài khác sẽ bị xóa cùng với mọi thứ bên trong chúng.

Các liên kết có thể sử dụng http, https, mailto, tel, ftp hoặc một địa chỉ tương đối. Mọi thứ khác — bao gồm javascript:, data: và blob: — đều bị từ chối, cũng như địa chỉ chứa tham chiếu ký tự bên ngoài bảng thực thể của công cụ này.

Giao diện chỉnh sửa sử dụng document.execCommand. Nó không được dùng nữa, sự thay thế của nó không được triển khai trong bất kỳ trình duyệt nào và hoạt động khác nhau giữa các công cụ, đặc biệt đối với các danh sách lồng nhau. Chế độ nguồn là lối thoát khi lệnh thực hiện sai.

Tài liệu trên 500,000 ký tự sẽ bị từ chối.

Máy tính chmod

Chỉ có mười hai bit quyền: đọc, ghi và thực thi cho chủ sở hữu, nhóm và người khác, cộng với setuid, setgid và Sticky. Danh sách kiểm soát truy cập, thuộc tính mở rộng, bối cảnh SELinux, khả năng và ACL của Windows đều nằm ngoài những gì một chế độ có thể thể hiện.

Lệnh nó xây dựng là văn bản để bạn sao chép. Không có gì được thực thi và không có tệp nào trên máy của bạn được đọc hoặc thay đổi - trường đường dẫn chỉ tồn tại để điền lệnh.

Nó không tính toán số học umask và nó không biết một tệp nhất định hiện đang có chế độ nào, vì một trang web không thể nhìn thấy hệ thống tệp của bạn.

Docker chạy để soạn thảo

Một lệnh chạy docker sẽ trở thành một dịch vụ. Các thiết lập nhiều vùng chứa phải được tập hợp bằng cách chuyển đổi từng lệnh và tự hợp nhất các kết quả.

--mount, --gpus, --device, --link, --volumes-from, --network-alias và hàng tá cờ khác không có giá trị tương đương mà trình chuyển đổi này sẽ ghi. Mỗi cái tạo ra một cảnh báo đặt tên cho cờ thay vì biến mất.

Cờ mà trình chuyển đổi không nhận ra sẽ được coi là không có giá trị và cho biết như vậy trong một cảnh báo. Nếu nó lấy một giá trị thì giá trị đó sẽ bị đọc sai - hãy xóa cờ và thêm hiệu ứng của nó bằng tay.

Không có gì được thực thi, đánh giá hoặc chuyển tới shell: lệnh được phân chia bởi một tokeniser hiểu được trích dẫn và không có gì khác. Do đó, trình chuyển đổi không thể mở rộng $VARIABLES, giải quyết $(các chuỗi con) hoặc đọc --env-file, vì cả ba đều có nghĩa là chạy một cái gì đó hoặc mở một tệp.

Đầu ra được kiểm tra xem có trích dẫn YAML chính xác hay không nhưng không được xác thực theo Thông số kỹ thuật của Compose và không có hình ảnh nào được liên hệ để xác nhận rằng nó tồn tại.

Các lệnh trên 100,000 ký tự bị từ chối.

Trình tạo crontab

Chỉ cú pháp crontab năm trường. Các biểu thức thạch anh sáu trường và systemd bị từ chối kèm theo lời giải thích, cũng như các toán tử không chuẩn L, W, # và ?, và @reboot, không có lịch xem trước.

Các trường ngày trong tháng và ngày trong tuần được kết hợp với OR khi cả hai đều bị hạn chế, khớp với cron Vixie. Công cụ này sẽ cảnh báo bất cứ khi nào điều đó được áp dụng, vì đây là trường hợp đọc sai dòng cron phổ biến nhất.

Thời gian chạy tiếp theo được lấy từ dữ liệu múi giờ quốc tế của trình duyệt. Chúng là bản xem trước, không phải là lời hứa: máy chạy cron có thể sử dụng vùng khác, phiên bản tzdata khác hoặc đơn giản là có thể không chạy vào thời điểm đó.

Bản xem trước tìm kiếm năm năm tới. Một lịch trình hiếm hơn thế — chẳng hạn như 29 Tháng 2 — sẽ hiển thị ít hơn năm lần chạy.

Điều gì xảy ra với những gì bạn dán

  • Mọi chuyển đổi, băm, giải mã và tìm khác biệt đều chạy trong tab trình duyệt của bạn. Không có đầu vào nào được tải lên, ghi lại hoặc lưu trữ trên máy chủ vì không có máy chủ nào liên quan sau khi trang được tải.
  • Băm đến từ việc triển khai Web Crypto của chính trình duyệt và UUID từ trình tạo ngẫu nhiên được bảo mật bằng mật mã của nó. Không liên quan đến cuộc gọi mạng.
  • Không có nội dung nào bạn nhập được ghi vào bộ nhớ cục bộ hoặc cookie. Tải lại trang sẽ loại bỏ nó; đóng tab sẽ loại bỏ nó.
  • Phân tích trên toàn trang web chỉ chạy trên máy chủ sản xuất chuẩn đã được định cấu hình và được tiết lộ trong Chính sách quyền riêng tư; máy chủ cục bộ và bản xem trước từ chối nó. Các giá trị, mã thông báo, URL và nội dung tệp đã dán sẽ bị loại trừ khỏi các sự kiện phân tích của chính ToolAcre. Quảng cáo bị vô hiệu hóa trong cấu hình hiện tại.
  • Điều đó cho biết: khóa JWT hoặc API là thông tin xác thực trực tiếp. Thói quen an toàn là không bao giờ dán nội dung này vào trang web mà bạn không viết, cho dù những tuyên bố của trang đó có đáng tin cậy đến đâu đi nữa - bao gồm cả trang này.

Câu hỏi

Bạn sẽ thêm tệp tải lên để băm hay base64?

Có thể, nhưng nó là một loại công cụ khác — đọc tệp, báo cáo tiến trình, bảo vệ bộ nhớ cho các tệp lớn — chứ không phải là một bổ sung nhỏ cho hộp văn bản. Ngày nay câu trả lời là không.

Bạn sẽ thêm xác minh chữ ký vào bộ giải mã JWT chứ?

Không. Việc xác minh yêu cầu khóa của nhà phát hành và thuật toán được ghim bên ngoài mã thông báo và trang web yêu cầu một trong hai thuật toán đó sẽ yêu cầu khả năng giả mạo mã thông báo. Hạn chế là tính năng.

Tại sao lại từ chối đầu vào lớn thay vì chậm?

Bởi vì "chậm" trong tab trình duyệt có nghĩa là trang không phản hồi và trên điện thoại, điều đó thường có nghĩa là tab đó bị tắt và dữ liệu đầu vào của bạn không còn nữa. Một lời từ chối rõ ràng với một giới hạn đã nêu sẽ hữu ích hơn một vòng quay không bao giờ kết thúc.

Tôi có thể sử dụng tính năng này ngoại tuyến không?

Sau khi trang được tải xong, có — bộ công cụ không cần đến mạng. Không có nhân viên dịch vụ nên lần tải đầu tiên yêu cầu kết nối.

Hạn chế

  • Bản thân trang này là danh sách hạn chế; mỗi phần trên nêu rõ những gì một tiện ích không thể làm được.
  • Các giới hạn được thực thi bằng mã và được báo cáo trong giao diện chứ không chỉ được ghi lại ở đây.