Bahasa Melayu

Perkara yang tidak boleh dilakukan oleh Kit Data Pembangun

Setiap utiliti di sini mempunyai kelebihan. Halaman ini menyatakan di mana setiap satu berhenti, mengapa, dan apa yang perlu digunakan - supaya anda mengetahui sebelum anda bergantung padanya, bukan selepas.

Kekangan yang berlaku untuk segala-galanya

Semua pemprosesan berlaku dalam satu tab pelayar, menggunakan memori peranti anda. Itulah yang menjadikan tuntutan privasi benar, dan ia juga merupakan sumber setiap had saiz di bawah. Setiap utiliti mengehadkan inputnya secara eksplisit dan menolak kerja bersaiz besar dengan mesej yang jelas dan bukannya membekukan halaman.

Dua ciri memerlukan konteks selamat — https:// atau localhost — kerana itulah satu-satunya tempat pelayar mendedahkan Web Crypto API: SHA pencincangan dan UUID generasi. Dibuka di atas HTTP biasa pada alamat LAN, kedua-duanya akan memberitahu anda bahawa ia tidak tersedia. Kedua-duanya tidak akan menggantikan pelaksanaan tulisan tangan, kerana pelayar sendiri adalah yang patut dipercayai.

Tiada pekerja perkhidmatan, jadi beban pertama memerlukan sambungan rangkaian. Selepas itu, tiada apa yang diperlukan oleh kit alat itu.

JSON

Tegas RFC 8259 sahaja. Ulasan, koma di belakang, rentetan petikan tunggal, kekunci tidak disebut dan NaN atau Infiniti semuanya ditolak — ini adalah ciri literal objek JSON5 atau JavaScript, bukan JSON. Pengesah menamakan mana yang ditemuinya, jadi penolakan sekurang-kurangnya boleh diambil tindakan.

Nombor dihuraikan sebagai IEEE-754 beregu, iaitu yang JSON.parse lakukan. Integer melebihi 2^53 kehilangan ketepatan semasa perjalanan pergi dan balik. Jika anda mengendalikan pengecam besar, ia perlu menjadi rentetan dalam JSON itu sendiri — tiada cara untuk mana-mana alat JavaScript memulihkan nilai yang tidak dapat diwakili oleh format.

Susunan kunci dikekalkan seperti yang ditulis, dan isihan pilihan digunakan untuk kekunci objek sahaja. Susunan tatasusunan tidak pernah diubah, kerana menyusun semula tatasusunan mengubah data dan bukannya pembentangannya.

Dokumen lebih kurang 8 juta aksara ditolak.

Penukar sintaks

Sembilan penukaran terarah — JSON kepada YAML, YAML kepada JSON, JSON kepada XML, XML kepada JSON, JSON kepada TOML, TOML kepada JSON, YAML kepada TOML, TOML kepada YAML, JSON kepada CSV. Apa-apa yang tiada dalam senarai itu ditolak dengan ayat yang menamakan laluan yang memang wujud. Set penuh konvensyen terdapat pada halaman penukar; bahagian ini menyatakan tempat penukaran berhenti.

CSV ditulis dan tidak pernah dibaca. Membacanya bermakna meneka pembatas, dialek petikan, baris pengepala dan jenis untuk setiap sel — empat tekaan penukar tersalah senyap.

Komen hilang dalam setiap arah, dalam setiap format yang ada.

YAML dimuatkan dengan skema terhad yang sahaja boleh menghasilkan data berbentuk JSON. Teg tersuai dan khusus bahasa — !!js/function, !!python/object/apply, !!binari, !!cap masa, !!set, !!map — ditolak. Itu disengajakan: pemuat yang membinanya ialah pembina objek arbitrari.

Di bawah skema lalai JSON, "~" dan nilai kosong ialah rentetan dan bukannya nol dan "ya" ialah rentetan "ya". Pilihan skema teras menyelesaikannya seperti yang diharapkan oleh kebanyakan orang. Kedua-duanya selamat; mereka berbeza dalam tafsiran skalar, dan alat menerangkan yang mana pada titik pilihan. Kedua-duanya tidak membaca TIDAK sebagai palsu — itu adalah tingkah laku YAML 1.1 dan ini ialah YAML 1.2.

Strim YAML berbilang dokumen menjadi susunan dokumen, kerana tiada format lain di sini mempunyai strim. Sauh dan alias diselesaikan dan bukannya dipelihara, alias rekursif ditolak dan dokumen yang melepasi sejuta nilai selepas aliasnya diikuti ditolak — corak YAML "billion laughs". Kunci pemetaan berulang mengekalkan nilai terakhir, dan alat berkata demikian.

YAML infiniti dan NaN tidak mempunyai perwakilan dalam sebarang format sasaran. Daripada membiarkan JSON.stringify menulis batal secara senyap, alat itu menukar dan memberi amaran kepada anda bahawa ia berlaku.

Dokumen XML yang mengandungi DOCTYPE ditolak mentah-mentah, tidak berbahaya disertakan, jadi tiada entiti luar boleh diselesaikan dan tiada rantaian entiti boleh dikembangkan. Tiada pilihan untuk membenarkannya. XML kandungan bercampur kehilangan kedudukan teks berbanding dengan elemen kanak-kanak, satu elemen berulang tidak boleh dibezakan daripada yang tidak berulang dan setiap nilai ialah rentetan melainkan inferens jenis dihidupkan.

TOML mempunyai empat jenis temporal yang JSON, YAML dan XML tidak mempunyai. Setiap satu menjadi rentetan RFC 3339 yang ditulis sebagai, jadi perjalanan pergi balik TOML menukar nilai tersebut kepada rentetan; tiada jalan tanpa kerugian. TOML tidak mempunyai null, jadi kekunci null digugurkan daripada output TOML. Akar dokumen TOML mestilah jadual, jadi tatasusunan atau skalar JSON tidak boleh menjadi TOML sama sekali. Nombor bulat melepasi 2^53 menjadi rentetan dan bukannya dibulatkan secara senyap.

CSV tidak boleh membezakan rentetan kosong daripada nol. Nilai bersarang diratakan menjadi nama lajur bertitik, jadi kunci yang sudah mengandungi titik menghasilkan nama samar-samar yang diberi amaran dan bukannya terlepas. Sel teks yang bermula dengan =, +, -, @, tab atau carriage return diawali dengan apostrof, kerana hamparan melaksanakannya sebagai formula.

Input dihadkan mengikut format: 8 juta aksara untuk JSON, 4 juta untuk XML, 2 juta untuk YAML dan TOML. Output CSV dihadkan pada 100,000 baris dan 2,000 lajur.

Pangkalan64

Teks sahaja. Tiada muat naik fail di sini: untuk mengekod fail anda perlu membacanya, dan kit alat ini dibina di sekeliling kotak teks. Gunakan alat berorientasikan fail untuk itu.

Penyahkodan menghasilkan teks apabila bait adalah sah UTF-8 dan melaporkan ralat bersih apabila ia tidak — pada ketika itu paparan bait akan menunjukkan kepada anda heks sebaliknya. Muatan binari sewenang-wenangnya bukan teks, dan berpura-pura sebaliknya akan merosakkannya.

Input lebih kurang 4 juta aksara ditolak.

URL pengekodan

Tiga peraturan yang ditawarkan — komponen, keseluruhan-URL dan bentuk — ialah tiga yang ditakrifkan oleh platform. Varian khusus aplikasi (AWS SigV4 kanonik, OAuth 1.0a peratus pengekodan) berbeza dalam cara yang kecil dan tidak disediakan.

Pemeriksa URL memerlukan URL mutlak dengan skim. Laluan relatif tidak boleh diuraikan menjadi hos, laluan dan pertanyaan, kerana ia tidak mempunyainya.

Nama domain antarabangsa ditunjukkan semasa pelayar menormalkannya, yang mungkin kod puny dan bukannya skrip asal.

HTML entiti

Jadual entiti yang dinamakan meliputi subset praktikal — aksara kritikal penanda, tipografi, mata wang, anak panah, matematik, Greek dan Latin-1 — bukan semua rujukan bernama 2,231 HTML5. Nama di luarnya disenaraikan untuk anda dan dibiarkan betul-betul seperti yang tertulis, kerana mencipta watak akan lebih buruk daripada meninggalkan teks sahaja.

Koma bertitik penamat diperlukan. HTML5 bertolak ansur dengan beberapa rujukan warisan tanpa satu, tetapi menyelesaikannya dengan betul bergantung pada penanda sekeliling, yang tidak ada pada alat teks kendiri.

Penyahkodan ialah pas tunggal, jadi "&amp;lt;" menyahkod kepada teks "&lt;" dan bukannya kepada "<". Itu betul: pengekodan berganda itu mungkin disengajakan.

Ini melepaskan teks untuk HTML. Ia bukan pembersih HTML — ia tidak akan mengambil dokumen yang penuh dengan penanda dan menanggalkan bahagian berbahaya. Itu adalah kerja yang berbeza dan lebih sukar.

Cap masa

Pengesanan unit ialah heuristik: 10^11 dan ke atas dibaca sebagai milisaat. Ia sentiasa ditunjukkan dan sentiasa boleh ditolak, tetapi ia adalah tekaan pada input yang samar-samar.

Cap masa mikrosaat dan nanosaat, yang dipancarkan oleh sesetengah pangkalan data, tidak dikesan. Bahagikan dengan 1,000 atau 1,000,000 dahulu.

Penukaran menggunakan masa POSIX, yang tidak mempunyai saat lompat — 23:59:60 tidak wujud di sini, kerana ia tidak terdapat dalam mana-mana cap waktu Unix.

Penyampaian masa tempatan menggunakan zon yang dikonfigurasikan pelayar anda. Anda tidak boleh memilih zon IANA sewenang-wenangnya untuk dipaparkan.

Nilai melebihi kira-kira ±273,790 tahun dari zaman itu melebihi apa yang boleh diwakili oleh tarikh JavaScript dan ditolak.

UUID

Sahaja versi 4 (rawak) dihasilkan. Versi 1 dan 6 memerlukan alamat MAC dan jujukan jam yang stabil; versi 7 memerlukan kaunter monotonik untuk bernilai apa-apa; versi 3 dan 5 adalah berasaskan nama dan memerlukan ruang nama dan cincang yang tidak didedahkan oleh pelayar untuk tujuan ini.

Pengesah mengiktiraf bentuk teks kanonik dan melaporkan versi serta varian. Ia tidak dapat memberitahu anda sama ada UUID telah dijana dengan baik — versi-4 UUID yang dihasilkan daripada penjana lemah kelihatan sama dengan yang baik.

Satu kelompok dihadkan pada nilai 500.

Tanpa Web Crypto, tiada apa yang dihasilkan. Berbalik kepada Math.random() akan menghasilkan pengecam yang boleh diramal, jadi alat itu menolak sebaliknya.

SHA cincang

Sahaja SHA-1, SHA-256, SHA-384 dan SHA-512, kerana itulah yang SubtleCrypto laksanakan. MD5 tidak hadir kerana keperluan dan pilihan.

SHA-1 hadir untuk kebolehoperasian warisan dan dilabelkan sebagai rosak secara kriptografi di mana-mana sahaja ia muncul. Jangan gunakannya untuk apa-apa yang keselamatannya penting.

Teks sahaja — tiada pencincangan fail, atas sebab yang sama base64 tidak mempunyai input fail.

Tiada HMAC, tiada terbitan kunci, tiada pencincangan kata laluan. Kata laluan memerlukan fungsi yang perlahan, masin, keras memori seperti Argon2id, scrypt atau bcrypt; cincangan tujuan am yang pantas ialah alat yang salah dan menggunakan satu adalah satu kesilapan yang serius dan bukannya yang kecil.

Teks berbeza

Perbandingan peringkat baris sahaja. Tiada penyerlahan peringkat perkataan atau peringkat aksara dalam baris yang diubah.

Baris yang diubah suai muncul sebagai penyingkiran ditambah tambahan, iaitu cara skrip edit berasaskan baris mewakilinya.

Garisan hadapan dan belakang yang sama dipangkas sebelum perbandingan, jadi fail besar yang berbeza di satu tempat adalah pantas. Perkara yang tinggal dihadkan pada 2,000 garisan yang berbeza setiap sisi, di mana alat itu menolak dan bukannya mencuba peruntukan yang akan mematikan tab.

Tiada gabungan tiga hala, tiada aplikasi tampalan dan tiada kesedaran sintaks.

JWT penyahkodan

Penyahkodan sahaja. Tandatangan tidak pernah disahkan, dan ini tidak akan berubah — alasannya dinyatakan dalam panduan token.

Token yang disulitkan (JWE, lima segmen) tidak boleh dinyahkod tanpa kunci. Alat itu mengenal pasti mereka dan berhenti.

Token bersarang tidak dibuka secara automatik; menyahkod token dalaman secara berasingan.

Tuntutan di luar set berdaftar RFC 7519 ditunjukkan tanpa tafsiran, kerana maknanya adalah khusus aplikasi.

Token melebihi 200,000 aksara ditolak.

Editor HTML WYSIWYG

Sanitizer ialah senarai yang dibenarkan untuk keluaran editor ini sendiri, dibina pada tokeniser rentetan dan bukannya penghurai HTML5 penuh. Ia bukan penapis XSS tujuan umum, dan menggunakannya sebagai satu adalah satu kesilapan: pelayar boleh menghuraikan muatan yang sengaja rosak ke dalam pepohon yang berbeza daripada tokenizer ini. HTML yang tidak dipercayai tergolong dalam sanitiser sebelah pelayan yang dijalankan terhadap penghurai sebenar.

Sahaja elemen tersenarai yang masih hidup: perenggan, tajuk, penekanan, senarai, pautan, petikan, kod dan segelintir teg sebaris. Semua yang lain dibuka, jadi teksnya kekal dan tagnya tidak. Imej, jadual, warna, fon dan gaya sebaris semuanya tiada, dan tiada cara untuk menambahkannya.

skrip, gaya, iframe, objek, benam, borang, svg, matematik dan unsur teks mentah atau kandungan asing yang lain dialih keluar bersama-sama dengan segala-galanya di dalamnya.

Pautan boleh menggunakan http, https, mailto, tel, ftp atau alamat relatif. Apa-apa lagi — termasuk javascript:, data: dan blob: — ditolak, seperti alamat yang mengandungi rujukan aksara di luar jadual entiti alat ini.

Permukaan pengeditan menggunakan document.execCommand. Ia ditamatkan, penggantiannya tidak dilaksanakan dalam mana-mana pelayar, dan tingkah laku berbeza antara enjin, terutamanya untuk senarai bersarang. Mod sumber ialah pintu keluar apabila arahan melakukan perkara yang salah.

Dokumen yang melebihi 500,000 aksara ditolak.

Kalkulator Chmod

Dua belas bit kebenaran sahaja: baca, tulis dan laksanakan untuk pemilik, kumpulan dan lain-lain, ditambah setuid, setgid dan sticky. Senarai kawalan akses, atribut lanjutan, konteks SELinux, keupayaan dan ACL Windows semuanya berada di luar apa yang boleh dinyatakan oleh mod.

Perintah yang dibina ialah teks untuk anda salin. Tiada apa-apa yang dilaksanakan, dan tiada fail pada mesin anda dibaca atau diubah — medan laluan wujud sahaja untuk mengisi arahan.

Ia tidak mengira aritmetik umask, dan ia tidak tahu mod apa yang dimiliki oleh fail tertentu pada masa ini, kerana halaman web tidak dapat melihat sistem fail anda.

Docker berlari untuk mengarang

Satu arahan docker run menjadi satu perkhidmatan. Persediaan berbilang bekas perlu dipasang dengan menukar setiap arahan dan menggabungkan hasilnya sendiri.

--mount, --gpus, --device, --link, --volumes-from, --network-alias dan sedozen bendera lain tidak mempunyai persamaan yang akan ditulis oleh penukar ini. Masing-masing mengeluarkan amaran yang menamakan bendera dan bukannya hilang.

Bendera yang tidak dikenali oleh penukar dianggap sebagai tidak mengambil nilai dan menyatakan demikian dalam amaran. Jika ia mengambil satu, nilai itu salah baca - alih keluar bendera dan tambah kesannya dengan tangan.

Tiada apa-apa yang dilaksanakan, dinilai atau dihantar ke shell: arahan dipecahkan oleh tokenizer yang memahami petikan dan tidak ada yang lain. Oleh itu penukar tidak boleh mengembangkan $VARIABLES, menyelesaikan $(subkulit) atau membaca --env-file, kerana ketiga-tiganya bermakna menjalankan sesuatu atau membuka fail.

Output disemak untuk petikan YAML yang betul tetapi tidak disahkan terhadap Spesifikasi Karang, dan tiada imej dihubungi untuk mengesahkan ia wujud.

Perintah ke atas 100,000 aksara ditolak.

Penjana Crontab

Sintaks crontab lima medan sahaja. Ekspresi Kuarza enam medan dan sistemd ditolak dengan penjelasan, begitu juga dengan pengendali bukan standard L, W, # dan ?, dan @reboot, yang tidak mempunyai jadual untuk pratonton.

Medan hari bulan dan hari minggu digabungkan dengan ATAU apabila kedua-duanya dihadkan, sepadan dengan Vixie cron. Alat ini memberi amaran pada bila-bila masa yang berkenaan, kerana ia adalah salah baca yang paling biasa bagi baris cron.

Masa larian seterusnya datang daripada data zon waktu Antarabangsa pelayar. Ia adalah pratonton, bukan janji: mesin yang menjalankan cron mungkin menggunakan zon yang berbeza, versi tzdata yang berbeza, atau mungkin tidak berjalan pada masa itu.

Pratonton mencari lima tahun ke hadapan. Jadual yang lebih jarang daripada itu — 29 Februari, misalnya — akan menunjukkan kurang daripada lima larian.

Apa yang berlaku kepada apa yang anda tampal

  • Setiap penukaran, cincang, penyahkod dan perbezaan berjalan dalam tab pelayar anda. Tiada input dimuat naik, dilog atau disimpan pada pelayan, kerana tiada pelayan yang terlibat selepas halaman dimuatkan.
  • Hashes datang daripada pelaksanaan Web Crypto sendiri pelayar, dan UUID daripada penjana rawak yang selamat secara kriptografi. Kedua-duanya tidak melibatkan panggilan rangkaian.
  • Tiada apa-apa yang anda taip ditulis pada storan tempatan atau kuki. Memuat semula halaman akan membuangnya; menutup tab membuangnya.
  • Analitis seluruh tapak berjalan sahaja pada hos pengeluaran kanonik yang dikonfigurasikan dan didedahkan dalam Dasar Privasi; tempatan dan hos pratonton menolaknya. Nilai, token, URL dan kandungan fail yang ditampal dikecualikan daripada acara analitis ToolAcre sendiri. Pengiklanan dilumpuhkan dalam konfigurasi semasa.
  • Yang berkata: kunci JWT atau API ialah bukti kelayakan langsung. Tabiat selamat adalah jangan sekali-kali menampal satu ke halaman web yang anda tidak tulis, walau bagaimanapun boleh dipercayai dakwaannya — termasuk yang ini.

Soalan

Adakah anda akan menambah muat naik fail untuk pencincangan atau base64?

Mungkin, tetapi ia adalah jenis alat yang berbeza — pembacaan fail, pelaporan kemajuan, pengawal memori untuk fail besar — ​​bukannya tambahan kecil pada kotak teks. Hari ini jawapannya tidak.

Adakah anda akan menambah pengesahan tandatangan pada penyahkod JWT?

Tidak. Pengesahan memerlukan kunci pengeluar dan algoritma yang disematkan di luar token, dan halaman web yang meminta sama ada meminta keupayaan untuk memalsukan token. Hadnya ialah ciri.

Mengapa menolak input besar dan bukannya sahaja perlahan?

Kerana "lambat" dalam tab pelayar bermaksud halaman yang tidak responsif, dan pada telefon ia selalunya bermakna tab dimatikan dan input anda hilang. Penolakan yang jelas dengan had yang dinyatakan adalah lebih berguna daripada pemutar yang tidak pernah berakhir.

Bolehkah saya menggunakan ini di luar talian?

Selepas halaman dimuatkan, ya — tiada kit alat memerlukan rangkaian. Tiada pekerja perkhidmatan, jadi beban pertama memerlukan sambungan.

Had

  • Halaman ini sendiri adalah senarai had; setiap bahagian di atas menyatakan perkara yang tidak boleh dilakukan oleh satu utiliti.
  • Had dikuatkuasakan dalam kod dan dilaporkan dalam antara muka, bukan sahaja didokumenkan di sini.