هل يوجد إطار أمان PHP يحمي أرقام الهواتف وكلمات المرور أيضًا؟

StackOverflow https://stackoverflow.com/questions/120977

سؤال

أنا أفهم شعار "لا تقم بإنشاء ما تريد" عندما يتعلق الأمر بأطر عمل أمان الموقع.

في معظم الحالات على أي حال.

سأتعاون في موقع يدمج الرسائل النصية في النظام.

أرغب في استخدام إطار عمل أمني موجود ومختبر جيدًا لحماية بيانات المستخدمين، ولكني أحتاجه أيضًا لحماية رقم هاتف المستخدمين أيضًا.

لا أريد أن أكون المسؤول عن قائمة أرقام الهواتف المحمولة للمستخدمين التي يتم اختراقها وإرسال رسائل غير مرغوب فيها.

ما هي الاقتراحات التي يمكن أن يقدمها المجتمع؟

هل كانت مفيدة؟

المحلول

لاحظ أن التقنيات المطبقة على كلمات المرور غير قابلة للتطبيق هنا.يمكنك تخزين كلمة مرور مملحة ومجزأة (على الرغم من إمكانية التنازع على قيمة القيام بذلك)، لكن هذا لا ينطبق على أرقام الهواتف.

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

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

لا يستطيع قاعدة البيانات ولا الجزء الرئيسي من التطبيق فك تشفير أرقام الهاتف (لذلك على سبيل المثال لا يمكنك البحث عنها)، ولكن يمكنهم تشفيرها بالإضافة إلى قاعدة البيانات.

يُطلق على التقنية العامة اسم "فصل الامتيازات"، وما ورد أعلاه هو مجرد مثال واحد.

لاحظ أن أرقام الهاتف ستحتاج عمومًا إلى أن تكون مبطنة ببيانات عشوائية قبل التشفير (مثل تمليح كلمة مرور مجزأة).وإلا فمن الممكن الإجابة على سؤال "هل رقم الهاتف المشفر X؟"، دون معرفة المفتاح الخاص.قد لا تكون هذه مشكلة من منظور شخصي لمرسلي البريد العشوائي الذين يسرقون قائمة التوزيع الخاصة بك، ولكنها مشكلة من منظور شخصي للادعاء بأن أرقام هواتفك مخزنة بشكل آمن، لأنها تعني أن هجوم القوة الغاشمة يصبح ممكنًا:لا يوجد سوى بضعة مليارات من أرقام الهواتف، وقد يكون من الممكن تضييق هذا العدد بشكل كبير لمستخدم معين.

آسف هذا لا يجيب مباشرة على سؤالك:لا أعرف ما إذا كان هناك إطار عمل PHP سيساعد في تنفيذ فصل الامتيازات.

[تعديل للإضافة:في الواقع، يخطر لي أنه تحت عنوان "الحفاظ على بساطة التطبيق المميز"، قد لا ترغب في استخدام إطار عمل على الإطلاق.يعتمد الأمر نوعًا ما على ما إذا كنت تعتقد أنك ستترك على الأرجح أخطاءً في الكمية الصغيرة من التعليمات البرمجية التي تحتاجها حقًا، أم أن مؤلفي إطار العمل قد تركوا أخطاء في كمية أكبر بكثير (ولكنها أكثر استخدامًا) من التعليمات البرمجية التي يستخدمونها. لقد كتبت.ولكن هذا تبسيط كبير للغاية.]

نصائح أخرى

نظرًا لأنك بحاجة إلى أن تكون قادرًا على استرداد أرقام الهواتف، فإن الشيء الوحيد الذي يمكنك فعله لحمايتها (بخلاف الأشياء العادية التي قد تفعلها لحماية قاعدة بياناتك) هو تشفيرها.هذا يعني أنك بحاجة إلى:

  • تأكد من عدم تسرب المفتاح عند تسرب تفريغ قاعدة بيانات عن غير قصد.
  • تأكد من أن نظامك لا يقوم بفك تشفير أرقام الهواتف بشكل مفيد عندما يتمكن شخص ما من حقن SQL في نظامك.

بالطبع لا تزال التوصية بعدم استخدام التشفير الخاص بك سارية، استخدم AES أو أي تشفير آخر يحظى باحترام كبير وطول مفتاح معقول.

يسعدني أن أعلن عن إطلاق نظام تأمين الثغرات لـ PHP

يرمز هذا المشروع إلى جلب نوع الأمان إلى PHP الذي يتم توفيره في Java بواسطة Spring Security، وهو نظام Acegi Security System for Spring سابقًا.لقد تم تصميمه ليكون جذابًا لمستخدمي Spring Security لأن الفلسفة هي نفسها.إنها طريقة غير مزعجة لإضافة الأمان إلى موقع PHP.يتم إجراء التكوين باستخدام الركيزة IoC/DI حيث يستخدم Spring Security Spring IoC/DI.

مثال على التكوين يأتي مع إطار العمل ويمكن استخدامه على النحو التالي:

$context = new substrate_Context(
    './path/to/hole-security/hole-security-config.php'
);

$context->execute();

$hole_Security = $context->get('hole_FilterChainProxy' );
$hole_Security->doFilter();

فقط تأكد من تنفيذ كود التمهيد الخاص بإطار العمل قبل تمهيد MVC الذي تختاره.

موقع إلكتروني:http://code.google.com/p/hole-security/

توثيق:في الوقت الحالي، يمكنك استخدام الوثائق المرجعية الخاصة بـ Spring Security حيثما يتم تطبيقها.يمكنك الحصول على فكرة عامة باستخدام الوثائق المرجعية لـ Acegi Security لأن الثغرة الأمنية تستخدم نفس طريقة التكوين، ولكن ضع في اعتبارك أنها تعتمد على Spring Security.

رخصة:تم إصداره بموجب ترخيص Apache الإصدار 2.0.

سمات:يوفر Hole-Security نظام أمان قابل للتوصيل حيث يمكنك اعتماد متطلبات الأمان لبيئتك.يوجد حاليًا نظام أمان بسيط جدًا لأنه موجود في الإصدار الأول ولكن مع الأساس الأساسي الذي يوفره، يمكنك اقتراح أو طلب ميزات جديدة لإضافتها إلى المشروع.

الميزات الحالية:

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

  2. سيتم تطبيق المرشحات التي تم تكوينها على أنماط عناوين URL.يمكن توصيل أداة مطابقة مسار URL، وهي حاليًا تأتي مع أداة مطابقة مسار أنماط النمل.

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

  4. يمكن الوصول إلى سياق الأمان المشترك من أي رمز للتطبيق الخاص بك إذا تم تطبيق Hole_HttpSessionContextIntegrationFilter.يمكنك استخدام هذا السياق لحفظ المعلومات المتعلقة بالجلسة دون استخدام كائن الجلسة مباشرة.

  5. يمكنك استخدام صفحة تسجيل دخول مخصصة وتخصيصها وفقًا لتكوين Hole_AuthenticationProcessingFilter، أو تخصيص Hole_AuthenticationProcessingFilter وفقًا لصفحة تسجيل الدخول المخصصة الخاصة بك.

  6. برنامج تشفير كلمة المرور الافتراضي هو نص عادي، بدون تشفير.ستحتوي الإصدارات المستقبلية على تطبيقات لـ MD5، وSha Based، وBase64 وغيرها من الترميزات ذات الصلة.يمكنك إنشاء برنامج تشفير كلمة المرور الخاص بك وتكوينه.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top