طريقة الاستخدام
- الصق نص السكربت أو ملف الأنماط في نص الملف، أو اختر الملف تحت أو ملف.
- اختر الخوارزمية. استخدم الثلاثة جميعها لكتابة قيمة لكل خوارزمية.
- اكتب عنوان الملف كما ستحمّله الصفحة تماماً. يظهر العنصر الذي تلصقه أسفل ذلك.
- انسخ قيمة السلامة أو العنصر الذي تلصقه إلى صفحتك. ولفحص قيمة عندك، الصقها تحت قيمة السلامة للفحص.
كيف تُحسب القيمة
قيمة السلامة هي اسم خوارزمية التجزئة، ثم شرطة، ثم الهضم (digest) للملف بترميز base64. يُجزّئ المتصفح البايتات الدقيقة للملف، فتتغير القيمة إذا تغيّر بايت واحد. وكل متصفح مطابق يدعم sha256 وsha384 وsha512 (القسم 3.2 من SRI). ويستخدم Base64 أبجدية RFC 4648 مع علامة = في النهاية للحشو (القسم 4).
تُقبل قيمة فيها عدة عناصر مفصولة بمسافات (القسم 3.2.1). ويستخدم المتصفح أقوى خوارزمية بين العناصر التي يعرفها، فـsha512 يحسم على sha256.
integrity = اسم الخوارزمية + شرطة + base64(digest(bytes))
- sha256: 44 حرفاً من base64 بعد الشرطة.
- sha384: 64 حرفاً بعد الشرطة.
- sha512: 88 حرفاً بعد الشرطة.
ما يفحصه الفحص وما لا يشمله
ينجح الفحص حين تعطي بايتات الملف إحدى قيم الخوارزمية الأقوى في السمة (القسم 3.3 من SRI). ويُتجاهل عنصر بخوارزمية لا يعرفها المتصفح. وإذا لم يبق عنصر، ينجح الفحص دون مقارنة أي شيء، لذلك تبلغ هذه الأداة عن هذه الحالة بأنها غير مفحوصة.
لا تدل القيمة على مصدر الملف، فهي تثبت أن الملف يحمل البايتات التي جُزّئت. أعد توليد القيمة في كل مرة يتغير فيها الملف، مثلاً بعد تحديث مكتبة، واحتفظ بالقيمة في المكان نفسه الذي فيه العنصر.
النص abc
النص abc هو ثلاثة بايتات 61 62 63 بترميز UTF-8. اختر sha256 واكتب abc في مربع النص. قيمة السلامة للنص هي المدونة في الجدول، والعنصر الذي تلصقه يحملها مع crossorigin بالقيمة anonymous.
| الخوارزمية | قيمة السلامة لـ abc |
|---|---|
| sha256 | sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= |
| sha384 | sha384-ywB1P0WjXou1oD1pmsZQBycsMqsO3tFjGotgWkP/W+2AhgcroefMI1i67KE0yCWn |
الأسئلة الشائعة
هل أغيّر القيمة حين يتغير الملف؟
نعم. فالقيمة لتسلسل بايتات واحد بعينه، فتحديث المكتبة، ولو بتغيير مسافة واحدة، يعطي قيمة مختلفة. عندها يفشل الفحص حتى تحمل السمة القيمة الجديدة.
أي خوارزمية أختار؟
كل المتصفحات تدعم الخوارزميات الثلاث (القسم 3.2 من SRI). وsha384 أقوى هضماً من sha256، وقيمته أقصر من sha512. اختر الثلاثة جميعها لتكتب قيمة لكل منها، وسيفحص المتصفح الأقوى.
لماذا تحمل القيمة اسم خوارزمية وشرطة؟
يخبر الاسم المتصفح بالهضم الذي يحسبه. والشرطة تنهي الاسم، لأن الأسماء لا تحوي شرطات، بينما قد تحوي قيمة base64 شرطات في أبجديتها الآمنة للعناوين، كما يسمح القسم 3.5 من SRI.
هل تُرسل الأداة ملفي إلى خادم؟
لا. يقرأ متصفحك الملف ويجزّئه بطريقة الهضم في المتصفح (crypto.subtle). ولا تجري الصفحة أي طلب شبكي، ولا تحفظ ما تكتبه أو تختاره.
لماذا يحوي العنصر الذي تلصقه crossorigin؟
تشترط SRI أن تستخدم الموارد من أصل آخر مشاركة CORS (القسم 5.3)، وcrossorigin بالقيمة anonymous يطلب من المتصفح استخدامها. ويضعه العنصر للسكربت وملف الأنماط معاً.
المصادر
- W3C, Subresource Integrity (Working Draft, 20 March 2026): sections 3.2, 3.3, 3.5 and 5.3 (باللغة الإنجليزية)
- RFC 4648, The Base16, Base32, and Base64 Data Encodings, section 4 (باللغة الإنجليزية)
- MDN, SubtleCrypto.digest() (باللغة الإنجليزية)
آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.