الكورس

Advertisements

حماية كلمة المرور عن طريق ملف htaccess.


كان الغرض الأصلي من ملفات htaccess. هو تقييد الوصول إلى directories معينة على أساس كل مستخدم ومن هنا جاء الـ hypertext access.

 

htpassw.

 

يحمل هذا الملف أسماء المستخدمين وكلمات المرور لنظام htaccess.

ويتم تخزين كل واحد منهم على سطر واحد ، كالتالى:

username:encryptedpassword

على سبيل المثال:

mohamed:Mo120zSk6tyG

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

 

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

 

💡 يمكنك الاختيار من بين بعض خوارزميات التشفير المختلفة:

 

  • bcrypt: هذا هو الأكثر أمانًا ، ولكنه بطىء أثناء التشفير، وهو مدعوم من قبل Apache و Nginx.
  • MD5: تستخدم أحدث إصدارات Apache هذه خوارزمية التشفير الافتراضية ، لكن NGINX لا تدعمها.

 

خوارزميات غير آمنة ( من الأفضل تجنبها ):

 

  • () crypt كانت في السابق وظيفة التشفير الافتراضية ، ولكنها ليست خيارًا آمنًا.
  • SHA.

 


إنشاء أسماء المستخدمين وكلمات المرور في سطر الأوامر

 

يمكنك إنشاء ملف htpasswd. وإضافة أزواج (اسم المستخدم وكلمة المرور) إليه مباشرة من Command Line أو SSH Terminal.

 

أمر التعامل مع ملف htpasswd. هو ببساطة htpasswd.

لإنشاء ملف htpasswd. جديد ، استخدم الأمر خيار c- (للإنشاء) ، ثم اكتب المسار إلى directory (وليس عنوان URL ، المسار الفعلي على الخادم).

 

يمكنك أيضًا تضمين مستخدم تريد إضافته:

-c /usr/local/etc/.htpasswd Hamed

يؤدي هذا إلى إنشاء ملف htpasswd. جديد في directory الـ / etc/ وإضافة سجل لمستخدم يسمى “Hamed”، ستتم مطالبتك بكلمة مرور ، والتي سيتم تخزينها أيضًا ، باستخدام تشفير md5.

 

إذا كان هناك بالفعل ملف htpasswd. في الموقع المحدد ، فلن يتم إنشاء ملف جديد – يتم إلحاق المستخدم الجديد ببساطة بالملف الموجود.

 

إذا كنت تفضل استخدام خوارزمية bcrypt hashing، استخدم الخيار b-.


إنشاء أسماء المستخدمين وكلمات المرور بدون إستخدام سطر الأوامر

 

إذا لم تفضل إستخدام سطر الأوامر، يمكنك ببساطة إنشاء ملف htpasswd. وتعبئته باستخدام text editor عادي ، وتحميله عبر FTP أو مدير الملفات.

 

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

 

هناك العديد من أدوات تشفير htpasswd المتاحة على الإنترنت، مثل htpasswd generator at Aspirine.org.

 

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


مكان حفظ ملف htpasswd. الخاص بك

 

لست بحاجة إلى أن يكون لديك ملف htpasswd. منفصل لكل ملف htaccess. في معظم الظروف العادية ، يجب أن يكون لديك حساب استضافة الويب بالكامل أو directory الخادم الرئيسي.

 

يجب ألا يكون ملف htpasswd. في directory يمكن للجميع الوصول إليه وليس public_html أو www أو أي directory فرعي، يجب أن تكون أعلى من تلك الموجودة في مجلد لا يمكن الوصول إليه إلا من الخادم نفسه.


كيفية استخدام htpasswd. مع htaccess.

 

يمكن أن يكون لكل directory ملف htaccess خاص به ، مع مجموعة المستخدمين الخاصة به التي يُسمح لها بالوصول إليها.

 

إذا كنت تريد وصول أي شخص (بما في ذلك المستخدمين غير المسجلين) إلى directory وملفاته ، فلا تفعل شيئًا – هذا هو الإعدادات الافتراضية.

 

لتقييد الوصول ، تحتاج إلى إضافة ما يلي إلى ملف htaccess.:

AuthType Basic
AuthName "Redirect Area"
AuthUserFile /usr/local/etc/.htpasswd
<Limit GET POST>
require valid-user
</Limit>

💡 توضيح التعليمات السابقة:

 

السطر 1: يحدد نوع المصادقة الذي سيستخدمه خادم الويب ، “Basic” مناسب تمامًا لما نحتاج إليه.

السطر 2: يعيّن عنوان اسم المستخدم و كلمة المرور الذي سيظهر عندما يحاول شخص ما عرض صفحتك المحمية.

السطر 3: يخبر خادم الويب بمكان العثور على ملف اسم المستخدم و كلمة المرور.

السطر 4: يحدد الوسم <Limit> ما هو المحدود (في هذه الحالة ، القدرة على GET أو POST إلى أي ملف في directory)، ضمن زوج وسم <Limit> توجد قائمة بمن يُسمح له بالوصول إلى الملفات.

 

💡 ملاحظة: إذا كنت تستخدم cPanel ، فيجب عليك تكوينها في قسم الأمان “Password Protect Directories


في المثال السابق ، يمكن لأي مستخدم صالح الوصول إلى الملفات، إذا كنت ترغب في تقييد الوصول إلى مستخدم معين أو عدد قليل من المستخدمين ، فيمكنك تسميتهم، كالتالى:

AuthType Basic
AuthName "Redirect Area"
AuthUserFile /usr/local/etc/.htpasswd
<Limit GET POST>
require user mohamed
require user noor
</Limit>

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

 

على سبيل المثال يمكن تسمية ملف المجموعة بـ htgroups. كما يلي:

admin: hamed noor osama
helpers: ahmed alaa

ثم يمكنك تحديده في ملف htaccess الخاص بك:

AuthType Basic
AuthName "Redirect Area"
AuthUserFile /usr/local/etc/.htpasswd
<Limit GET POST>
require group helpers
</Limit>

 

 



الإبلاغ عن خطأ

×

إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:

[email protected]

شكرًا لك على مساعدتك لنا!


Advertisements
Advertisements
Advertisements