المطورون

التحويلات والفحوص الصغيرة التي تقطع العمل الحقيقي. كلها محلية، فلا تلصق بيانات داخلية في خادم شخص آخر.

16 أداة

بالتفصيل

الخطر الحقيقي في أدوات المطورين على الإنترنت

ابحث عن منسّق JSON أو فاكّ ترميز JWT فتظهر عشرات النتائج. والمشكلة أن معظمها يرسل مدخلاتك إلى خادم لمعالجتها. فإن كان ذلك الـJSON يحوي بريد عملاء، وكان ذلك الـJWT رمز جلسة حيًّا، فاللصق نفسه حادثة تسريب.

ويسهل تجاوز الأمر بعبارة «الرمز منتهي أصلًا»، لكن ما يهم في مراجعة الحوادث نادرًا ما يكون هل تسرّب شيء، بل أنك لا تستطيع إثبات إلى أين وصل.

كل ما في هذا القسم يعمل داخل المتصفح. والتحقق يستغرق عشر ثوانٍ: افتح لسان الشبكة في أدوات المطور واستخدم الأداة. لا توجد طلبات.

مواضع التعثر في JSON وBase64 وترميز العناوين

يُستخدم منسّق JSON لتحديد موضع خطأ التحليل أكثر مما يُستخدم للتجميل. والأسباب المعتادة فاصلة زائدة في النهاية، وعلامات اقتباس مفردة، ومحارف غير مرئية التقطها النسخ.

وBase64 ليس تشفيرًا. هو ترميز يستطيع أي أحد عكسه، ووظيفته نقل البيانات الثنائية عبر قناة نصية لا إخفاء شيء. وعند وضعه في عنوان URL يسبب + و/ مشكلات، فتلزم الصيغة الآمنة للعناوين باستخدام - و_.

وفي ترميز العناوين، السؤال دائمًا أي جزء تُرمِّز. فمقاطع المسار وقيم الاستعلام تحتاج تهريب محارف مختلفة، وترميز عنوان كامل دفعة واحدة يهدم :// أيضًا.

ماذا يعني «فك» رمز JWT فعلًا

رمز JWT ثلاثة أجزاء تفصلها نقاط — ترويسة وحمولة وتوقيع — والأولان مجرد Base64URL. أي شخص يستطيع قراءتهما. ووضع بيانات شخصية أو معرّفات داخلية في الرمز يعادل نشرها.

وفاكّ الترميز يقرأ هذين الجزأين فقط. والتحقق من التوقيع عملية منفصلة، وبدونه لا يُضمَن شيء عن صحة المحتوى. وهذه الثغرة بالذات هي سبب كون التطبيقات التي تقبل alg: none ثغرة أمنية حقيقية.

وانتهاء الصلاحية (exp) ووقت الإصدار (iat) طوابع زمنية يونكس لا تعني شيئًا للعين. وضم فاكّ الترميز إلى محوّل الطوابع يُظهر فورًا متى يموت الرمز.

التعابير النمطية وcron وCIDR — ما تخطئه المحاكاة الذهنية

تخطئ التعابير النمطية غالبًا عند المكمّمات الجشعة. فـ.* تلتهم أطول ما تستطيع، ولذلك يطابق <.*> من أول < إلى آخر > بدل وسم واحد. وجعلها كسولة بـ.*? أول علاج تجربه.

وفخّ cron الكلاسيكي تحديد يوم الشهر ويوم الأسبوع معًا. ففي معظم التطبيقات يجتمعان بـOR لا بـAND، فتعمل المهمة أكثر بكثير مما قُصد. وما لم تتحقق من المنطقة الزمنية للخادم، قد تكون «الثالثة فجرًا» ثالثةَ مكان آخر.

وفي حساب CIDR، العناوين القابلة للاستخدام ليست 2^(32−البادئة) بل ذلك ناقص عنوان الشبكة وعنوان البث. لهذا يعطي /30 عنوانين لا أربعة، ولهذا يوجد /31 كحالة خاصة لوصلات نقطة إلى نقطة.

الأدوات الأصغر

في تحويل الطوابع الزمنية، معظم الأخطاء ثوانٍ مقابل مللي ثانية. عشرة أرقام ثوانٍ، وثلاثة عشر مللي ثانية. وعامل الألف هو ما يوصلك إلى سنة 1970 أو إلى بعد خمسين ألف سنة.

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

وتحويل الألوان ينتقل بين HEX وRGB وHSL. وHSL أسهل بكثير لتعديلات مثل «أفتح قليلًا» لأن مكوّنًا واحدًا فقط يتغير.

وتوليد QR يتيح ضبط مستوى تصحيح الأخطاء. فرفع المستوى يزيد كثافة الرمز لكنه يبقيه مقروءًا إن اتسخت الطباعة أو غُطّي جزء منه.

ما يحسبه محاكي الحمل

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

والجزء المخالف للحدس أن زمن الانتظار ينفجر كلما اقترب معدل الاستخدام من 100%. فالانتقال من 90% إلى 95% يفسد زمن الاستجابة أكثر بكثير من الانتقال من 70% إلى 80%. فعبارة «ما زال هناك 10% من المعالج» ليست إشارة أمان.

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

حدود هذه الأدوات

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

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