أمن المعلومات

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

اود ان اذكركم واذكر نفسي بان تخزين كلمات المرور او البيانات الحساسة في قاعدة البيانات يعتبر خرقا امنيا وقصورا برمجيا. فيجب عليك كمبرمج ان لا تقوم بتخزين كلمات المرور او اي معلومات حساسة بصورتها الطبيعية text/plain في قاعدة البيانات ، وكما ان عمل md5 لتلك المعلومات قد يفقدك القدرة على الحصول على تلك المعلومات مرة اخرى.

فمثلا استخدام md5 لكلمات مرور الدخول للحساب (ولو ان هذه الطريقة ليست امنه) الا انها قد تفي بالغرض احيانا خصوصا اذا تم استخدام salt token اضافية . ولكن ماذا لو ودننا ان نقوم بتخزين بيانات معينة في القاعدة بصورة مشفرة ولكننا نرغب في استرجاع تلك البيانات وتحويلها لاصلها مرة اخرى – مثلا نود تخزين كلمة مرور البريد الالكتروني لخادم smtp في قاعدة البيانات – ونود ان نقوم باسترجاعها بين الحين والاخر من اجل تنفيذ عمليات ارسال رسائل البريد الالكتروني.

ان تخزين كلمة مرور البريد في قاعدة البيانات بصورة طبيعية plain/text يعتبر خرقا امنيا!. لماذا؟ لان من يصل لقاعدة البيانات سوف يستطيع الوصول لكلمة المرور بسهولة. ما الحل؟ الحل هو تشفير هذه البيانات باستخدام طرق تشفير معينه تضمن لما امكانية استعادة كلمة المرور من القاعدة فيما بعد واستخدامها.

 

على الرغم من انه يوجد الكثير من ادوات التشفير ولكن يفضل استخدام الادوات التي تتيحها openssl ك openssl_encrypt و openssl_decrypt حيث من خلالها تشفير النصوص باستخدام تقنيات تشفير معقدة باستخدام مفاتيح وتخزينها في قاعدة البيانات ، ثم يمكن لنا لاحقا استرجاع هذه المعلومات وفك تشفيرها والتعامل معها.

وعلى الرغم من ان التشفير يضيف مستوى اخر للحماية لكن بكل تاكيد فانه ليس الحل الامن 100% لان مصطلح حماية 100% غير موجود اساسا. حيث ان ما دام مفتاح التشفير مخزنا في الملفات البرمجية (وان كانت مشفرة او مغلقة المصدر) فهذا الامر يضعف مستوى الحماية حيث ان الوصول للملفات قد يعني خرقا للنظام وبكل تاكيد لا يمكننا ابعاد مفتاح التشفير بعيدا عن الملفات خصوصا اذا كنا نرغب للبرنامج القيام بتلك المهام بشكل تلقائي دون الرجوع لنا.

مطور تطبيقات انترنت واداري سيرفرات لينكس.

أضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *