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

رفع الملفات بأمان
عبدالله بن سنكر
زر «إرفاق ملف» يبان أبسط زر في أي نظام. وفي الحقيقة هو المكان الوحيد اللي تسمح فيه لأي شخص يرمي محتوى مجهولاً داخل نظامك. ملف هوية، أو عقد، أو صورة شيك، يبقى محفوظ عندك سنين، وأي خطأ في طريقة تخزينه ممكن يكشفه لأي أحد معه الرابط. عبدالله بن سنكر يبني أنظمة ويب وتطبيقات فيها ملفات حساسة، وأوضح طريقة يشرح فيها الأمان هنا إنه يتتبّع ملفاً واحداً من لحظة اختياره إلى لحظة فتحه مرة ثانية. خمس محطات، ولكل محطة سؤالها.
المحطة الأولى: جهاز المستخدم
المستخدم يختار ملفاً. هنا التطبيق يقدر يتحقق من الحجم والنوع ويقول بسرعة «الملف أكبر من المسموح» أو «نقبل PDF والصور بس»، ويقدر يصغّر الصورة قبل الرفع فيوفّر على المستخدم باقته ووقته. كل هذا ممتاز للتجربة، وما يحمي من شي. أي شخص يقدر يتجاوز التطبيق ويرسل الطلب بنفسه، ويغيّر امتداد الملف من exe إلى pdf في ثانية. فاعتبر تحقق الجهاز مجاملة للمستخدم الصادق، والحماية الحقيقية تبدأ في المحطات الجاية، على أجهزة أنت تتحكم فيها.
المحطة الثانية: الإذن من خادمك
الطريقة اللي يفضّلها في أغلب المشاريع إن الملف ما يمر من خادم التطبيق أصلاً، يروح مباشرة للتخزين السحابي. لكن قبلها التطبيق يستأذن من الخادم، والخادم هنا يسوي شغلاً مهماً:
- يتحقق إن المستخدم مسجّل، وإن له حق يرفع ملفاً لهذا الطلب أو هذي القضية تحديداً.
- يتحقق من الحصة: كم رفع هذا المستخدم أو هذا الحساب، عشان شخص واحد ما يعبّي تخزينك بملفات ضخمة.
- يختار هو اسم الملف ومساره، بمعرّف عشوائي تحت مجلد خاص بالحساب. اسم الملف الأصلي اللي كتبه المستخدم يُحفظ كبيانات في القاعدة للعرض بس، ما يُستخدم كمسار أبداً.
- يصدر رابط رفع موقّعاً صالحاً لدقائق، مربوطاً بهذا المسار، ومقيّداً بنوع المحتوى والحجم الأقصى إذا كان المزوّد يدعم هذا القيد.
- يسجّل في القاعدة إن فيه ملفاً «قيد الرفع» لهذا المستخدم، عشان يعرف لاحقاً وش اللي اكتمل ووش اللي انقطع.
المحطة الثالثة: الطريق للتخزين السحابي
التطبيق يرفع الملف بالرابط الموقّع مباشرة إلى حاوية التخزين. هذا يريّح خادمك من حمل الملفات الكبيرة، ويخلّي الرفع أسرع. والملفات الكبيرة تستاهل رفعاً على أجزاء يقدر يكمل من حيث وقف، لأن شبكة الجوال تنقطع، والمستخدم اللي رفع ٩٠٪ من فيديو ثم بدأ من الصفر ما يرجع يحاول. وانتبه لإعدادات CORS على الحاوية: اسمح بالرفع من نطاق موقعك بس، مو من أي مكان. وبعد ما يكتمل الرفع، يبلّغ التطبيق الخادم، أو الأفضل إن التخزين نفسه يرسل حدثاً للخادم، فيبدأ الفحص.
وفي تطبيقات الجوال بالذات، اعرض شريط تقدّم حقيقي بدل مؤشر يلف بلا معنى، وخلّ المستخدم يقدر يلغي الرفع. ولو انتهت صلاحية الرابط الموقّع قبل ما يكمل الرفع البطيء، يطلب التطبيق رابطاً جديداً من الخادم ويكمل، مو يرمي خطأ غامض ويطلب من المستخدم يبدأ من الأول. هذي التفاصيل ما لها علاقة بالأمان مباشرة، لكنها اللي تمنع المستخدم يدوّر على طريق ثاني أقل أماناً، مثل إرسال المستند على واتساب.
المحطة الرابعة: الفحص بعد الوصول
الملف وصل، لكنه لسا مو «مقبول». يبقى في حالة انتظار لين يمر من هذي الفحوصات:
- النوع الحقيقي: اقرأ أول بايتات الملف، اللي تحدد نوعه الفعلي، بدل ما تصدق الامتداد أو النوع اللي أرسله المتصفح.
- إعادة ترميز الصور: فك الصورة وأعد حفظها من جديد، فتختفي أي بيانات مدسوسة داخلها، وتنمسح بيانات EXIF اللي ممكن تحمل موقع التصوير.
- فحص البرمجيات الخبيثة للمستندات اللي بيفتحها أشخاص ثانيين، مثل ملف يرفعه عميل ويفتحه موظف.
- حدود المعالجة: الملفات المضغوطة اللي تتفك لأحجام ضخمة، والصور بأبعاد خيالية، ممكن تطيّح خدمة المعالجة. حدد سقفاً قبل ما تفك أي شي.
- اللي يفشل في الفحص ينعزل أو ينحذف، والمستخدم يوصله سبب مفهوم.
المحطة الأخيرة: التسليم للي يحق له بس
هنا تصير أغلب التسريبات الفعلية. الحاوية لازم تكون خاصة بالكامل: لا قراءة عامة، ولا إمكانية سرد محتوياتها. لما يطلب مستخدم ملفاً، الخادم يتحقق من صلاحيته أولاً، ثم يصدر رابط تنزيل موقّعاً صالحاً لدقائق. رابط دائم عام لمستند عميل يعني إن أي أحد وصله الرابط، من بريد أو محادثة أو سجل متصفح، يفتحه للأبد. وقدّم الملفات اللي ما تثق في محتواها بترويسة تفرض التنزيل بدل العرض، ولا تعرض ملفات HTML أو SVG رفعها المستخدمون من نفس نطاق تطبيقك، لأنها ممكن تحمل سكربتات تشتغل بصلاحيات موقعك. نطاق منفصل لمحتوى المستخدمين يقفل هذا الباب. وأخيراً، قاعدة تنظيف دورية تمسح الملفات اللي بدأ رفعها وما اكتمل، أو اللي انحذف سجلها من القاعدة.
وفيه تفاصيل صغيرة حول هذي المحطة تفرق في الأنظمة الحساسة. اسم الملف الأصلي اللي كتبه المستخدم ينعرض في الواجهة كنص عادي، مو كمحتوى HTML، لأن اسم الملف نفسه ممكن يكون محاولة حقن. وكل تنزيل يتسجّل: مين فتح وش ومتى، لأن السؤال «مين شاف هذا المستند؟» يجي يوماً ما، والجواب لازم يكون جاهزاً. والتشفير على مستوى التخزين يكون مفعّلاً، وهو غالباً متوفر من المزوّد بإعداد واحد. ولو حذف المستخدم ملفه، فاحذفه فعلاً من الحاوية بعد مدة الاحتفاظ المتفق عليها، مو تخفيه من الواجهة وتتركه للأبد في التخزين يزيد الفاتورة ويزيد حجم أي تسريب محتمل.
في نظام مثل «ياء» لمكاتب المحاماة، الملف مو مرفق جانبي، هو جزء من القضية نفسها، وتسريبه يضر الموكّل قبل المكتب. عبدالله عبدالرحيم بن سنكر الكندي يتعامل مع كل زر رفع بهذي العقلية في أنظمة منصة أزهل الرقمية: الملف ضيف مجهول لين يثبت العكس، ومكانه غرفة مقفلة، ومفتاحها يُعطى لدقائق، لشخص محدد، بعد ما يثبت إنه صاحب حق.
عندك فكرة؟ الاستشارة الأولى علينا
كلّم عبدالله مباشرة على واتساب — رسالتك توصل له هو، مو لرد آلي. نسمع فكرتك ونقول لك وش تحتاج وكم تكلّف، ببلاش.
مقالات ذات صلة
كل المقالات
قاعدة معرفة للبوت
عبدالله بن سنكر
قاعدة معرفة للبوت: أخطاء في تجهيز الملفات يحذّر منها عبدالله بن سنكر
عبدالله بن سنكر يعدد أخطاء تجهيز قاعدة معرفة البوت: ملفات مصورة، وسياسات متناقضة، وأسئلة بلغة الشركة لا العميل، وأسعار ثابتة في ملفات، وكيف تصلح كل خطأ قبل الإطلاق.
اقرأ المقال
أخطاء الإعلانات الممولة
عبدالله عبدالرحيم الكندي
عبدالله عبدالرحيم الكندي: ٨ أخطاء في الإعلانات الممولة تحرق ميزانيتك
عبدالله عبدالرحيم الكندي يعرض ثمانية أخطاء تحرق ميزانية الإعلانات الممولة، من هدف الحملة الغلط إلى تفتيت الميزانية وتعب الإعلان، مع علامة كل خطأ وطريقة إصلاحه بالأرقام.
اقرأ المقال
المحتوى التعليمي
عبدالله الكندي
عبدالله الكندي: المحتوى التعليمي كأداة ثقة، خرافات ودروس من مدونة أزهل
«لو علّمت الناس ببلاش، ليش يشترون مني؟» عبدالله الكندي يرد على خرافات المحتوى التعليمي بحقائق من تجربة مدونة أزهل، ويشرح كيف يتحول الشرح المجاني إلى ثقة تسبق البيع.
اقرأ المقال