مولّد بصمات SRI
ولّد بصمة SRI لأي ملف JS أو CSS واحصل على وسم script أو link جاهز للنسخ واللصق.
🔒 تتم معالجتها بالكامل في متصفحك — ولا يتم تحميل أي شيء تدخله هنا على الإطلاق.
النتيجة
تتيح Subresource Integrity (SRI) للمتصفح التحقق من أن ملف نصي برمجي (script) أو صفحة أنماط (stylesheet) تم جلبه من شبكة توصيل محتوى (CDN) أو من جهة خارجية لم يُعبث به قبل تشغيله — حيث يُجري المتصفح عملية هاش للبايتات التي تم تنزيلها، ويرفض تنفيذ الملف إن لم تطابق البصمة صفة integrity التي نشرتها. تحسب هذه الأداة تلك البصمة لأي ملف JS أو CSS تُلقيه، وتجري العملية بالكامل داخل تبويب متصفحك، فلا يغادر الملف جهازك أبداً ليتم حساب بصمته.
أداة هاش عامة لن تنتج قيمة SRI قابلة للاستخدام: فالمواصفة تشترط بصمة مرمّزة بصيغة Base64، وليس السلسلة الست عشرية (hex) التي تطبعها معظم أدوات التحقق، ولا تقبل سوى ثلاث خوارزميات فقط — sha256 وsha384 وsha512. يقصر مولّد البصمات هذا خيارات الخوارزمية على هذه الثلاث تماماً ويقوم بترميز النتيجة بالطريقة الصحيحة، ثم يخطو خطوة إضافية بتركيب وسم HTML الكامل حولها، مع حقل placeholder لـ src أو href يمكنك تعديله في مكانه قبل النسخ.
خلف الكواليس، يُقرأ الملف عبر File API، ويتم حسابه بخوارزمية هاش باستخدام تنفيذ crypto.subtle.digest() الأصلي، وتُحوّل البايتات الناتجة إلى Base64 على هيئة قطع صغيرة بدلاً من إجراء عملية نشر واحدة كبيرة — تفصيلة تكتسب أهميتها حين يتجاوز حجم ملف JS مجمّع بضع مئات الآلاف من البايتات، حيث قد تؤدي أساليب التحويل الساذجة إلى بلوغ حد استدعاء المكدس في المتصفح.
تُختار sha384 افتراضياً لأنها الخوارزمية الأكثر شيوعاً في أمثلة وتوثيقات SRI، وتحقق توازناً بين طول البصمة ومقاومة التصادم، لكن sha256 وsha512 متاحتان بنقرة واحدة إذا شَرَط خط البناء (build pipeline) أو مزود الـ CDN متطلباً مختلفاً.