العربية

ما لا تستطيع مجموعة أدوات بيانات المطورين فعله

كل فائدة هنا لها ميزة. توضح هذه الصفحة أين يتوقف كل واحد، ولماذا، وما الذي يجب استخدامه بدلاً من ذلك - حتى تكتشف ذلك قبل أن تعتمد عليه، وليس بعده.

القيود التي تنطبق على كل شيء

تتم جميع عمليات المعالجة في علامة تبويب متصفح واحدة، باستخدام ذاكرة جهازك. وهذا ما يجعل ادعاء الخصوصية صحيحًا، وهو أيضًا مصدر كل حدود الحجم أدناه. تحدد كل أداة مدخلاتها بشكل صريح وترفض العمل الكبير الحجم برسالة واضحة بدلاً من تجميد الصفحة.

هناك ميزتان تحتاجان إلى سياق آمن - https:// أو localhost - لأن هذا هو المكان الوحيد الذي تعرض فيه المتصفحات تشفير الويب API: تجزئة SHA وتوليد UUID. تم فتحه على HTTP عادي على عنوان LAN، وسيخبرك كلاهما أنهما غير متاحين. ولن يحل أي منهما محل التنفيذ المكتوب بخط اليد، لأن المتصفح نفسه هو الذي يستحق الثقة.

لا يوجد عامل خدمة، لذا فإن التحميل الأول يحتاج إلى اتصال بالشبكة. بعد ذلك، لا يتطلب أي شيء تقوم به مجموعة الأدوات.

JSON

صارم RFC 8259 فقط. يتم رفض التعليقات والفواصل اللاحقة والسلاسل ذات علامات الاقتباس المفردة والمفاتيح غير المقتبسة وNaN أو Infinity كلها - وهي JSON5 أو JavaScript الميزات الحرفية للكائن، وليست JSON. يقوم المدقق بتسمية الشخص الذي وجده، لذا يكون الرفض قابلاً للتنفيذ على الأقل.

يتم تحليل الأرقام على هيئة IEEE-754 مضاعفة، وهو ما يفعله JSON.parse. الأعداد الصحيحة التي تتجاوز 2^53 تفقد دقتها أثناء الرحلة ذهابًا وإيابًا. إذا كنت تتعامل مع معرفات كبيرة الحجم، فيجب أن تكون سلاسل في JSON نفسها - لا توجد طريقة لأي أداة JavaScript لاستعادة قيمة لا يمكن للتنسيق تمثيلها.

يتم الاحتفاظ بترتيب المفاتيح كما هو مكتوب، وينطبق الفرز الاختياري على مفاتيح الكائنات فقط. لا يتغير ترتيب المصفوفة أبدًا، لأن إعادة ترتيب المصفوفة يؤدي إلى تغيير البيانات بدلاً من عرضها.

يتم رفض المستندات التي يزيد عدد أحرفها عن 8 مليون حرف.

محولات بناء الجملة

تسعة تحويلات موجهة — JSON إلى YAML، YAML إلى JSON، JSON إلى XML، XML إلى JSON، JSON إلى TOML، TOML إلى JSON، YAML إلى TOML، TOML إلى YAML، JSON إلى CSV. يتم رفض أي شيء غير موجود في تلك القائمة بجملة تشير إلى المسار الموجود بالفعل. المجموعة الكاملة للاصطلاحات موجودة على صفحة المحولين؛ يوضح هذا القسم المكان الذي تتوقف فيه التحويلات.

CSV مكتوب ولم يُقرأ أبدًا. تعني قراءتها تخمين محدد ولهجة اقتباس وصف رأس ونوع لكل خلية - أربعة تخمينات يخطئ فيها المحول بهدوء.

تضيع التعليقات في كل اتجاه، وفي كل تنسيق بها.

يتم تحميل YAML بمخطط مقيد يمكنه فقط إنتاج بيانات على شكل JSON. تم رفض العلامات المخصصة والمخصصة للغة — !!js/function, !!python/object/apply, !!binary، !!timestamp، !!set، !!omap. هذا أمر متعمد: المُحمل الذي يبني هذه العناصر هو مُنشئ كائن عشوائي.

ضمن مخطط JSON الافتراضي، تكون "~" والقيمة الفارغة عبارة عن سلاسل وليست فارغة، و"yes" هي السلسلة "yes". يعمل خيار المخطط الأساسي على حل تلك المشكلات بالطريقة التي يتوقعها معظم الأشخاص. كلاهما آمن. وهي تختلف في التفسير العددي، وتشرح الأداة أيهما عند نقطة الاختيار. لا يقرأ أي منهما NO على أنه خطأ - هذا سلوك YAML 1.1 وهذا هو YAML 1.2.

يصبح دفق YAML متعدد المستندات مصفوفة من المستندات، لأنه لا يوجد تنسيق آخر هنا يحتوي على دفق. يتم حل نقاط الارتساء والأسماء المستعارة بدلاً من الحفاظ عليها، ويتم رفض الاسم المستعار التكراري، ويتم رفض المستند الذي يمتد إلى ما يتجاوز مليون قيمة بمجرد اتباع الأسماء المستعارة - نمط YAML "مليار ضحكة". يحتفظ مفتاح التعيين المتكرر بالقيمة الأخيرة، والأداة تقول ذلك.

YAML اللانهاية وNaN ليس لهما أي تمثيل في أي تنسيق مستهدف. بدلاً من السماح لـ JSON.stringify بكتابة قيمة فارغة بصمت، تقوم الأداة بالتحويل وتحذرك من حدوث ذلك.

يتم رفض مستند XML الذي يحتوي على DOCTYPE تمامًا، بما في ذلك المستندات غير الضارة، لذلك لا يمكن حل أي كيان خارجي على الإطلاق ولا يمكن توسيع أي سلسلة كيانات على الإطلاق. لا يوجد خيار للسماح بذلك. XML يفقد المحتوى المختلط موضع النص بالنسبة للعناصر الفرعية، ولا يمكن تمييز عنصر متكرر واحد عن عنصر غير متكرر، وكل قيمة عبارة عن سلسلة ما لم يتم تشغيل استنتاج النوع.

يحتوي TOML على أربعة أنواع زمنية لا تتوفر في JSON وYAML وXML. تصبح كل منها السلسلة RFC 3339 التي تمت كتابتها بها، لذا فإن رحلة ذهابًا وإيابًا TOML تغير تلك القيم إلى سلاسل؛ لا يوجد طريق بلا خسائر. لا يحتوي TOML على قيمة فارغة، لذا يتم إسقاط المفاتيح الخالية من إخراج TOML. يجب أن يكون جذر مستند TOML عبارة عن جدول، لذا لا يمكن أن يصبح المصفوفة أو الحجم العددي JSON TOML على الإطلاق. الأعداد الصحيحة السابقة 2^53 تصبح سلاسل بدلاً من تقريبها بصمت.

لا يمكن لـ CSV التمييز بين سلسلة فارغة وسلسلة فارغة. يتم تسوية القيم المتداخلة في أسماء الأعمدة المنقطة، وبالتالي فإن المفتاح الذي يحتوي بالفعل على نقطة ينتج عنه اسم غامض يتم التحذير منه بدلاً من الهروب منه. الخلايا النصية التي تبدأ بـ =، +، -، @، أو علامة تبويب أو حرف إرجاع تكون مسبوقة بفاصلة عليا، لأن جداول البيانات تنفذها كصيغ.

يتم تحديد حد أقصى للإدخال حسب التنسيق: 8 مليون حرف لـ JSON، 4 مليون لـ XML، 2 مليون لـ YAML وTOML. تم تحديد الحد الأقصى للمخرجات CSV بعدد 100,000 من الصفوف و2,000 من الأعمدة.

قاعدة64

النص فقط. لا يوجد تحميل ملف هنا: لتشفير ملف، ستحتاج إلى قراءته، وقد تم تصميم مجموعة الأدوات هذه حول مربع نص. استخدم أداة موجهة للملفات لذلك.

يُنتج فك التشفير نصًا عندما تكون البايتات صالحة UTF-8، ويُبلغ عن خطأ نظيف عندما لا تكون كذلك - وعند هذه النقطة سيُظهر لك عرض البايت الشكل السداسي بدلاً من ذلك. الحمولة الثنائية العشوائية ليست نصًا، والتظاهر بخلاف ذلك قد يؤدي إلى إتلافها.

يتم رفض الإدخالات التي تزيد عن 4 مليون حرف تقريبًا.

ترميز URL

القواعد الثلاثة المقدمة - المكون، والكامل - URL والنموذج - هي القواعد الثلاثة التي يحددها النظام الأساسي. تختلف المتغيرات الخاصة بالتطبيق (AWS SigV4 canonicalisation، OAuth 1.0a في المئة ترميز) بطرق بسيطة ولا يتم توفيرها.

يحتاج المفتش URL إلى URL مطلقًا مع مخطط. لا يمكن تقسيم المسار النسبي إلى مضيف ومسار واستعلام، لأنه لا يحتوي عليهما.

يتم عرض أسماء النطاقات الدولية عندما يقوم المتصفح بتطبيعها، والتي قد تكون عبارة عن رمز punycode بدلاً من النص الأصلي.

HTML الكيانات

يغطي جدول الكيانات المُسمى المجموعة الفرعية العملية — الأحرف الترميزية الحرجة، والطباعة، والعملة، والأسهم، والرياضيات، واليونانية واللاتينية- 1 — وليس كل 2,231 HTML5 المراجع المسماة. تُدرج لك الأسماء خارجه وتُترك كما هي مكتوبة تمامًا، لأن اختراع حرف سيكون أسوأ من ترك النص وحده.

مطلوب فاصلة منقوطة للإنهاء. HTML5 يسمح ببعض المراجع القديمة بدون مرجع واحد، ولكن حل هذه المراجع بشكل صحيح يعتمد على العلامات المحيطة، والتي لا تتوفر في أداة النص المستقلة.

فك التشفير هو تمريرة واحدة، لذلك "&amp;lt;" يقوم بفك التشفير إلى النص "&lt;" بدلاً من "<". هذا صحيح: من المفترض أن التشفير المزدوج كان مقصودًا.

يؤدي هذا إلى تجاوز النص لـ HTML. إنه ليس معقمًا HTML — فهو لن يأخذ مستندًا مليئًا بالعلامات ويزيل الأجزاء الخطرة. هذه مهمة مختلفة وأصعب بكثير.

الطوابع الزمنية

اكتشاف الوحدة هو إرشادي: 10^11 وما فوق تتم قراءته بالمللي ثانية. يتم عرضه دائمًا ويمكن تجاوزه دائمًا، ولكنه تخمين على مدخلات غامضة.

لم يتم الكشف عن الطوابع الزمنية للميكروثانية والنانو ثانية، التي تنبعث منها بعض قواعد البيانات. اقسم على 1,000 أو 1,000,000 أولاً.

تستخدم التحويلات الوقت POSIX، الذي لا يحتوي على ثوان كبيسة - 23:59:60 غير موجود هنا، لأنه غير موجود في أي طابع زمني لنظام Unix.

يستخدم العرض بالتوقيت المحلي المنطقة التي تم تكوينها في متصفحك. لا يمكنك اختيار منطقة IANA عشوائية للعرض فيها.

القيم التي تتجاوز ±273,790 سنة تقريبًا من العصر تتجاوز ما يمكن أن تمثله تواريخ JavaScript ويتم رفضها.

UUIDs

يتم إنشاء الإصدار 4 (عشوائي) فقط. يحتاج الإصداران 1 و6 إلى عنوان MAC وتسلسل ثابت للساعة؛ الإصدار 7 يحتاج إلى عداد رتيب حتى يساوي أي شيء؛ يعتمد الإصداران 3 و5 على الاسم ويحتاجان إلى مساحة اسم وتجزئة لا يعرضها المتصفح لهذا الغرض.

يتعرف المدقق على نموذج النص الأساسي وإصدار التقارير ومتغيرها. لا يمكن أن يخبرك ما إذا كان UUID قد تم إنشاؤه بشكل جيد أم لا - الإصدار 4 UUID الذي تم إنتاجه من مولد ضعيف يبدو مطابقًا للمولد الجيد.

يتم تحديد الحد الأقصى للدفعة بقيم 500.

بدون Web Crypto، لا يتم إنشاء أي شيء. إن الرجوع إلى Math.random() قد ينتج عنه معرفات يمكن التنبؤ بها، لذا ترفض الأداة بدلاً من ذلك.

SHA التجزئة

فقط SHA-1، SHA-256، SHA-384 و SHA-512، لأن هذه هي ما ينفذه SubtleCrypto. MD5 غائب بالضرورة واختيارا.

SHA-1 موجود لقابلية التشغيل التفاعلي القديمة ويتم تصنيفه على أنه معطل من الناحية التشفيرية في كل مكان يظهر فيه. لا تستخدمه لأي شيء يهم أمنه.

نص فقط - لا يوجد تجزئة للملف، لنفس السبب لا يحتوي Base64 على إدخال ملف.

لا يوجد HMAC، ولا يوجد اشتقاق مفتاح، ولا توجد تجزئة لكلمة المرور. تحتاج كلمات المرور إلى وظيفة بطيئة ومملّحة وصعبة الذاكرة مثل Argon2id أو scrypt أو bcrypt؛ إن التجزئة السريعة ذات الأغراض العامة هي أداة خاطئة، واستخدام واحدة يعد خطأً فادحًا وليس خطأً صغيرًا.

فرق النص

المقارنة على مستوى الخط فقط. لا يوجد تمييز على مستوى الكلمة أو على مستوى الحرف ضمن السطر الذي تم تغييره.

يظهر السطر المعدل كإزالة بالإضافة إلى الإضافة، وهي الطريقة التي يمثلها بها برنامج نصي للتحرير يعتمد على السطر.

يتم قطع الخطوط البادئة واللاحقة المتطابقة قبل المقارنة، بحيث تكون الملفات الكبيرة التي تختلف في مكان واحد سريعة. ما تبقى محدد بـ 2,000 خطوط مختلفة لكل جانب، وبعد ذلك ترفض الأداة بدلاً من محاولة التخصيص الذي قد يؤدي إلى إنهاء علامة التبويب.

لا يوجد دمج ثلاثي، ولا يوجد تطبيق تصحيح، ولا يوجد وعي ببناء الجملة.

JWT فك التشفير

فك التشفير فقط. لا يتم التحقق من التوقيعات أبدًا، ولن يتغير هذا — تم توضيح السبب في دليل الرمز المميز.

لا يمكن فك تشفير الرموز المميزة (JWE، خمسة أجزاء) بدون المفتاح. تحددهم الأداة وتتوقف.

لا يتم فك الرموز المميزة المتداخلة تلقائيًا؛ فك تشفير الرمز الداخلي بشكل منفصل.

يتم عرض المطالبات خارج المجموعة المسجلة RFC 7519 بدون تفسير، لأن معناها خاص بالتطبيق.

يتم رفض الرموز المميزة التي تزيد عن 200,000 من الأحرف.

HTML WYSIWYG محرر

المطهر عبارة عن قائمة مسموح بها لمخرجات هذا المحرر، مبنية على رمز سلسلة بدلاً من محلل HTML5 كامل. إنه ليس مرشحًا للأغراض العامة XSS، واستخدامه كمرشح سيكون خطأً: يمكن للمتصفح تحليل حمولة مشوهة عمدًا إلى شجرة مختلفة عن تلك التي يفعلها هذا الرمز المميز. ينتمي HTML غير الموثوق به إلى أداة التعقيم من جانب الخادم التي تعمل ضد محلل حقيقي.

تبقى العناصر المدرجة فقط: الفقرات، والعناوين، والتأكيد، والقوائم، والروابط، والاقتباسات، والتعليمات البرمجية، وحفنة من العلامات المضمنة. يتم فك كل شيء آخر، لذا يبقى نصه ولا تبقى علامته. الصور والجداول والألوان والخطوط والأنماط المضمنة كلها غائبة، ولا توجد طريقة لإضافتها.

تتم إزالة البرنامج النصي والنمط وiframe والكائن والتضمين والنموذج وsvg والرياضيات وعناصر النص الخام أو المحتوى الأجنبي الأخرى مع كل شيء بداخلها.

قد تستخدم الروابط http أو https أو mailto أو tel أو ftp أو عنوانًا نسبيًا. يتم رفض أي شيء آخر - بما في ذلك javascript: وdata: وblob:، كما هو الحال مع العنوان الذي يحتوي على مرجع حرف خارج جدول كيان هذه الأداة.

يستخدم سطح التحرير document.execCommand. لقد تم إهماله، ولم يتم تنفيذ استبداله في أي متصفح، ويختلف السلوك بين المحركات، خاصة بالنسبة للقوائم المتداخلة. وضع المصدر هو فتحة الهروب عندما يفعل الأمر شيئًا خاطئًا.

يتم رفض المستندات التي يزيد عدد أحرفها عن 500,000.

آلة حاسبة شمود

بتات الأذونات الاثني عشر فقط: القراءة والكتابة والتنفيذ للمالك والمجموعة وغيرهم، بالإضافة إلى setuid وsetgid وsticky. إن قوائم التحكم في الوصول والسمات الموسعة وسياقات SELinux والإمكانيات وقوائم ACL لنظام التشغيل Windows كلها خارج نطاق ما يمكن أن يعبر عنه الوضع.

الأمر الذي ينشئه هو نص يمكنك نسخه. لا يتم تنفيذ أي شيء، ولا تتم قراءة أو تغيير أي ملف على جهازك — حقل المسار موجود فقط لملء الأمر.

فهو لا يحسب حساب umask، ولا يعرف الوضع الحالي لملف معين، لأن صفحة الويب لا يمكنها رؤية نظام الملفات الخاص بك.

تشغيل عامل الميناء للإنشاء

يصبح أمر تشغيل عامل الإرساء خدمة واحدة. يجب تجميع إعدادات الحاويات المتعددة عن طريق تحويل كل أمر ودمج النتائج بنفسك.

--mount، --gpus، --device، --link، --volumes-from، --network-alias وعشرات العلامات الأخرى ليس لها ما يعادلها سيكتبها هذا المحول. ينتج كل منها تحذيرًا بتسمية العلم بدلاً من الاختفاء.

يتم التعامل مع العلامة التي لا يتعرف عليها المحول على أنها لا قيمة لها، ويتم ذكر ذلك في التحذير. إذا استغرق الأمر واحدًا، فسيتم قراءة هذه القيمة بشكل خاطئ - قم بإزالة العلامة وأضف تأثيرها يدويًا.

لا يتم تنفيذ أي شيء أو تقييمه أو تمريره إلى الصدفة: يتم تقسيم الأمر بواسطة مُرمز مميز يفهم الاقتباس ولا شيء آخر. لذلك لا يمكن للمحول توسيع $VARIABLES، أو تحليل $(subshells) أو قراءة --env-file، لأن الثلاثة جميعها تعني تشغيل شيء ما أو فتح ملف.

يتم التحقق من صحة الإخراج YAML ولكن لم يتم التحقق من صحته مقابل مواصفات الإنشاء، ولا يتم الاتصال بأي صورة للتأكد من وجودها.

يتم رفض الأوامر التي تزيد عن 100,000 من الأحرف.

مولد كرونتاب

بناء جملة crontab المكون من خمسة حقول فقط. يتم رفض تعبيرات Quartz وsystemd ذات ستة حقول مع توضيح، وكذلك العوامل غير القياسية L وW و# و؟ و@reboot، التي ليس لها جدول زمني للمعاينة.

يتم دمج حقلي يوم من الشهر ويوم من الأسبوع مع OR عندما يكون كلاهما مقيدًا، مما يطابق Vixie cron. تحذر الأداة عندما ينطبق ذلك، لأنها القراءة الخاطئة الأكثر شيوعًا لخط cron.

تأتي أوقات التشغيل التالية من بيانات المنطقة الزمنية الدولية للمتصفح. إنها معاينة، وليست وعدًا: قد يستخدم الجهاز الذي يقوم بتشغيل cron منطقة مختلفة، أو إصدار tzdata مختلف، أو ببساطة قد لا يكون قيد التشغيل في ذلك الوقت.

تبحث المعاينة قبل خمس سنوات. الجدول الزمني الأكثر ندرة من ذلك - 29 فبراير، على سبيل المثال - سيُظهر أقل من خمسة عمليات تشغيل.

ماذا يحدث لما تلصقه

  • يتم تشغيل كل تحويل وتجزئة وفك تشفير وفرق في علامة تبويب المتصفح الخاص بك. لا يتم تحميل أي مدخلات أو تسجيلها أو تخزينها على الخادم، لأنه لا يوجد خادم مشارك بمجرد تحميل الصفحة.
  • تأتي التجزئة من تطبيق Web Crypto الخاص بالمتصفح، والمعرفات الفريدة الفريدة (UUID) من المولد العشوائي الآمن للتشفير. لا يتضمن أي منهما مكالمة شبكة.
  • لا تتم كتابة أي شيء تكتبه على وحدة التخزين المحلية أو ملف تعريف الارتباط. تؤدي إعادة تحميل الصفحة إلى تجاهلها؛ إغلاق علامة التبويب يتجاهلها.
  • يتم تشغيل التحليلات على مستوى الموقع فقط على مضيف الإنتاج الأساسي الذي تم تكوينه ويتم الكشف عنها في سياسة الخصوصية؛ المضيفون المحليون ومضيفو المعاينة يرفضون ذلك. يتم استبعاد القيم والرموز المميزة وعناوين URL ومحتويات الملفات التي تم لصقها من أحداث التحليلات الخاصة بـ ToolAcre. تم تعطيل الإعلان في التكوين الحالي.
  • ومع ذلك: يعد المفتاح JWT أو المفتاح API بمثابة بيانات اعتماد مباشرة. العادة الآمنة هي عدم لصق أي شيء على صفحة ويب لم تكتبها، مهما كانت ادعاءاتها جديرة بالثقة - بما في ذلك هذه الصفحة.

أسئلة

هل ستضيف تحميل الملف للتجزئة أو Base64؟

ربما، ولكنها أداة من نوع مختلف - قراءة الملفات، وإعداد التقارير المرحلية، وحماية الذاكرة للملفات الكبيرة - وليست إضافة صغيرة إلى مربع نص. اليوم الجواب هو لا.

هل ستضيف التحقق من التوقيع إلى وحدة فك الترميز JWT؟

لا. يتطلب التحقق مفتاح جهة الإصدار وخوارزمية مثبتة خارج الرمز المميز، وتطلب صفحة الويب التي تطلب أيًا منهما القدرة على تزوير الرموز المميزة. القيد هو الميزة.

لماذا نرفض المدخلات الكبيرة بدلاً من أن نكون بطيئين؟

لأن كلمة "بطيء" في علامة تبويب المتصفح تعني صفحة غير مستجيبة، وعلى الهاتف، غالبًا ما تعني علامة التبويب معطلة واختفاء إدخالاتك. إن الرفض الواضح مع الحد المعلن هو أكثر فائدة من الدوار الذي لا ينتهي أبدًا.

هل يمكنني استخدام هذا دون اتصال بالإنترنت؟

بعد تحميل الصفحة، نعم - لا تحتاج مجموعة الأدوات إلى الشبكة. لا يوجد عامل خدمة، لذا فإن التحميل الأول يتطلب الاتصال.

القيود

  • هذه الصفحة هي في حد ذاتها قائمة القيود؛ يوضح كل قسم أعلاه ما لا تستطيع أداة مساعدة واحدة فعله.
  • يتم فرض الحدود في التعليمات البرمجية ويتم الإبلاغ عنها في الواجهة، ولا يتم توثيقها هنا فقط.