مولّد htpasswd — bcrypt وحماية الويب
أنشئ مدخلات htpasswd بـ bcrypt وApache MD5 (apr1) وSHA-1 والمزيد. احصل على إعداد Apache وnginx وDocker جاهز للصق. 100% في متصفحك — بدون رفع.
التحقق من تجزئة موجودة
ما هو ملف htpasswd؟
يخزّن ملف .htpasswd بيانات الاعتماد المستخدمة في مصادقة HTTP Basic. كل سطر هو زوج واحد username:hash، حيث التجزئة مُقطَّر أحادي الاتجاه لكلمة المرور — لا يُخزَّن النصّ الصريح قط. تقرأ خوادم الويب هذا الملف لتحديد من يحق له الوصول إلى عنوان URL محمي. في Apache، يشير ملف .htaccess (أو كتلة <Directory>) إلى ملف .htpasswd ويطلب من المتصفح اسم مستخدم وكلمة مرور قبل عرض الصفحة.
يعتمد تنسيق التجزئة على الخوارزمية التي أنتجتها. يمكن لأداة Apache htpasswd إنتاج عدة تنسيقات: bcrypt (الأسطر التي تبدأ بـ $2y$) هو الأقوى ويُوصى به لـ Apache وDocker Registry وCaddy؛ apr1 (Apache MD5 التي تبدأ بـ $apr1$) هو الأكثر قابلية للنقل والخيار الآمن الافتراضي لـ nginx؛ SHA-1 (التي تبدأ بـ {SHA}) غير مُملَّحة وتُعدّ غير آمنة؛ crypt (DES التقليدية) موروثة وتعمد إلى بتر كلمات المرور عند 8 أحرف؛ أما plain فتخزّن كلمة المرور كنص صريح ولا ينبغي أبداً استخدامها في الإنتاج.
يعمل هذا المولّد بالكامل داخل متصفحك — لا يُرفع اسم مستخدم أو كلمة مرور أو تجزئة إلى أي مكان. إذا احتجت إلى كلمة مرور قوية لمدخلتك، استخدم مولّد كلمات المرور العشوائية لدينا. لبناء ترويسة Authorization: Basic يدوياً، بيانات الاعتماد هي مجرد base64(user:password)، وهو ما يمكنك إنتاجه بـ مُرمِّز Base64 لدينا. وبمجرد حماية نقطة النهاية، اختبرها من سطر الأوامر بـ منشئ أوامر cURL لدينا.
# Apache htpasswd CLI equivalents (apache2-utils / httpd-tools) # bcrypt entry, printed to stdout (recommended; -B = bcrypt, -n = no file, -b = password on CLI) htpasswd -Bbn admin 's3cret' # → admin:$2y$10$N9qo8uLOickgx2ZMRZoMye... # apr1 (Apache MD5) entry, portable for nginx — no apache2-utils needed printf "admin:$(openssl passwd -apr1 's3cret')\n" # → admin:$apr1$k3l4Hj9.$qN8... # Append a user to an existing file from the shell htpasswd -B /etc/apache2/.htpasswd alice # Note: nginx delegates bcrypt to the system crypt(); on Alpine/musl or old # glibc that fails — prefer apr1 for nginx to stay portable.
الميزات الرئيسية
خوارزميات تجزئة متعددة
أنشئ مدخلات bcrypt ($2y$) وapr1 / Apache MD5 ($apr1$) وSHA-1 ({SHA}) — إضافةً إلى خيار plain (نص صريح) للاختبار. يستخدم كل منها ملحاً عشوائياً جديداً حيث يدعم التنسيق ذلك.
توليد وتحقق
أنشئ مدخلات جديدة أو تحقق من مدخلات موجودة. الصق سطر user:hash المخزّن وكلمة مرور مرشّحة للتأكد فوراً مما إذا كانا متطابقَين — مفيد لتصحيح خطأ 401 في الإنتاج.
اختيار حسب الخادم
اختر Apache أو nginx أو Docker أو Caddy وتُختار الخوارزمية الصحيحة تلقائياً — bcrypt حيث يُدعم، وapr1 لقابلية نقل nginx — لتتجنّب أخطاء crypt() الصامتة.
كتل إعداد جاهزة للصق
احصل على ستة مقاطع إعداد جاهزة للنسخ — Apache .htaccess وnginx auth_basic وDocker وKubernetes ingress-nginx وCaddy وTraefik — مرتبطة مسبقاً بمدخلة .htpasswd المولَّدة.
100% على جانب العميل
تتم جميع عمليات التجزئة محلياً في متصفحك عبر Web Crypto وتطبيق bcrypt مُدمج. لا يُرسَل اسم مستخدم أو كلمة مرور أو تجزئة إلى أي خادم، لذا يمكنك توليد بيانات اعتماد إنتاجية بسرية تامة.
أمثلة
مدخلة bcrypt (موصى بها)
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
مدخلة bcrypt ببادئة $2y$ وتكلفة 10. هذا أقوى تنسيق وأكثره قابلية للنقل — استخدمه لـ Apache وDocker Registry وCaddy وTraefik.
مدخلة apr1 (nginx المحمول)
admin:$apr1$kl3H9j2.$qN8vY7tLp2mZ0xW5cR4fK1
Apache MD5 (apr1) بملح مكوّن من 8 أحرف بعد علامة $apr1$. الخيار الافتراضي الآمن لـ nginx، حيث يعتمد التحقق من bcrypt على دالة crypt() الخاصة بالنظام وهي غير موثوقة.
مدخلة SHA-1 (موروثة)
admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= مدخلة {SHA} هي ترميز base64 لمُقطَّر SHA-1 غير مُملَّح. يقبلها Apache وnginx، لكنها غير مُملَّحة وغير آمنة — مضمَّنة فقط للتوافق مع الأنظمة القديمة.
ترويسة Authorization: Basic
Authorization: Basic YWRtaW46czNjcmV0
بيانات اعتماد جانب العميل للمستخدم نفسه: base64('admin:s3cret'). أرسل هذه الترويسة مع curl -H أو Postman للمصادقة دون كتابة ملف .htpasswd.
ملف .htpasswd متعدد المستخدمين
admin:$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy alice:$2y$10$3bQ8xY7tLp2mZ0xW5cR4fO9vK1jH6sD2nG8aQ5wE3rT7uI4oP1cm bob:$apr1$mZ0xW5cR$4fK1jH6sD2nG8aQ5wE3rT2
سطر واحد username:hash لكل مستخدم. يمكن مزج الخوارزميات في الملف نفسه — هنا مدخلتان بـ bcrypt ومدخلة apr1 واحدة لثلاثة مستخدمين.
كيفية الاستخدام
- 1
ضبط الخادم والخوارزمية
اختر خادمك المستهدف (Apache أو nginx أو Docker أو Caddy). تُختار الخوارزمية الصحيحة تلقائياً — bcrypt لـ Apache وDocker وCaddy، وapr1 لـ nginx المحمول — لكن يمكنك تجاوزها وضبط تكلفة bcrypt يدوياً.
- 2
توليد التجزئة
أدخل اسم المستخدم وكلمة المرور (أو انقر «كلمة مرور عشوائية»)، ثم انقر «توليد». تُحسب التجزئة محلياً باستخدام ملح عشوائي جديد. يمكنك إعادة توليد الملح في أي وقت للحصول على مدخلة جديدة.
- 3
نسخ المدخلة
انسخ سطر user:hash الخاص بملف
.htpasswd، أو انسخ أمر الإلحاقecho >>للصدفة، أو انسخ ترويسة Authorization: Basic لاستخدامها مع curl وPostman. - 4
نشر الإعداد
الصق كتلة الإعداد المولَّدة في ملف Apache
.htaccessأو كتلة خادم nginx أو إعداد Docker أو دخول Kubernetes أو Caddy أو Traefik، وأشر إليها نحو ملف.htpasswd، ثم أعد تشغيل الخادم.
حالات الاستخدام الشائعة
- حماية مجلد Apache
- قيّد الوصول إلى مجلد بمصادقة HTTP Basic باستخدام ملف
.htaccessوتوجيه AuthUserFile. أسقط مدخلة bcrypt وكتلة إعداد Apache المولَّدة لفرض تسجيل الدخول على أي مسار. - nginx auth_basic
- احمِ كتلة location أو server بـ auth_basic وauth_basic_user_file. استخدم تنسيق apr1 ليعمل التحقق بموثوقية عبر صور Alpine وDebian وغيرها.
- Docker Registry
- يقبل Docker Registry الخاص فقط مدخلات htpasswd بتنسيق bcrypt. ولّد سطراً بـ
$2y$باستخدامhtpasswd -Bbn، ثم ثبّته في حاوية السجل وصادق بـdocker login. - Kubernetes ingress-nginx
- أنشئ سرّاً للمصادقة الأساسية من ملف
.htpasswdوأشر إليه بتعليقَي توضيح nginx.ingress.kubernetes.io/auth-type وauth-secret لتقييد مسار دخول. - Caddy وTraefik
- يتوقع توجيه Caddy basic_auth ومتوسط Traefik basicauth تجزئات bcrypt. الصق المدخلة المولَّدة مباشرةً في Caddyfile أو تسميات Traefik/الإعداد الديناميكي.
- ترويسة التفويض مع curl وPostman
- تخطَّ الملف كلياً للاختبارات السريعة: انسخ ترويسة Authorization: Basic لإرسال بيانات الاعتماد مباشرةً. أسقطها في علم curl -H أو طلب Postman للوصول إلى نقطة نهاية محمية.
التفاصيل التقنية
- bcrypt ($2y$)
- تجزئة تكيّفية مُملَّحة مبنية على شفرة Blowfish مع عامل تكلفة قابل للضبط. تتضمّن كل مدخلة ملحاً عشوائياً بحجم 16 بايت والتكلفة، لذا تنتج كلمات المرور المتطابقة تجزئات مختلفة. ملاحظة: يبتر bcrypt كلمة المرور عند 72 بايتاً — تُتجاهل الأحرف التي تتجاوز هذا الحد.
- apr1 (Apache MD5)
- نسخة Apache المتكرّرة والمُملَّحة من MD5 (
$apr1$+ ملح 8 أحرف). تُشغّل 1000 جولة MD5، وهو أضعف بكثير من تكلفة bcrypt التكيّفية، لكنها مُطبَّقة أصلاً في Apache وnginx، مما يجعلها التنسيق الأكثر قابلية للنقل عبر المنصات وصور الحاوية الأساسية. - SHA-1 وcrypt
- مدخلات SHA-1 (
{SHA}+ مُقطَّر base64) غير مُملَّحة، لذا تُنتج كلمات المرور المتطابقة تجزئات متطابقة وهي عرضة لجداول قوس قزح — مضمَّنة فقط للتوافق مع الأنظمة القديمة. crypt التقليدية (DES) أضعف من ذلك وتبتر كلمات المرور بصمت عند 8 أحرف. - الملح والتكرارات
- يمنع التمليح الهجمات المحسوبة مسبقاً (جداول قوس قزح) بجعل كل تجزئة فريدة. يستخدم bcrypt ملحاً عشوائياً بحجم 128 بت مع تكلفة قابلة للضبط؛ بينما يستخدم apr1 ملحاً مكوّناً من 8 أحرف مع 1000 تكرار ثابت. استخدم «إعادة توليد الملح» لإنتاج تجزئة صالحة مختلفة لكلمة المرور نفسها.
- معالجة Base64 وUTF-8
- تُرمَّز كلمات المرور كبايتات UTF-8 قبل التجزئة، لذا تُعالَج الأحرف غير ASCII باتساق. ترويسة Authorization: Basic هي ترميز base64 لبايتات UTF-8 الخامة بصيغة username:password، مطابقةً لما تفك الخوادم ترميزه عند الاستقبال.
- ملاحظات الأمانة والتحفظات
- تُحسب التجزئات المولَّدة محلياً ولا تُتحقق منها مقابل خادم فعلي. تُحفظ المدخلات المنسوخة وملفات
.htpasswdالمنزَّلة في الحافظة والقرص بصيغة نص-تجزئة — عاملها كأسرار، قيّد صلاحيات الملف، وامسح حافظتك بعد اللصق في الإعداد الإنتاجي.
أفضل الممارسات
- فضّل bcrypt حيثما كان مدعوماً
- استخدم bcrypt ($2y$) لـ Apache وDocker وCaddy وTraefik — فهو مُملَّح وتكيّفي وأقوى بكثير من apr1 أو SHA-1. احتفظ بـ apr1 لـ nginx فقط عندما يجعل اعتماد bcrypt على crypt() الخاصة بالنظام غير موثوق.
- خزّن الملف خارج جذر الويب
- أبقِ ملف
.htpasswdخارج أي مجلد يُخدَّم حتى لا يُنزَّل عبر HTTP. اضبطchmod 640واجعله مملوكاً لمستخدم خادم الويب لكي يتمكّن الخادم من قراءته دون السماح للحسابات الأخرى بذلك. - اخدم دائماً عبر HTTPS
- تنقل المصادقة الأساسية بيانات الاعتماد كـ base64 قابل للعكس مع كل طلب. بدون TLS، يستطيع أي شخص على مسار الشبكة قراءة كلمة المرور. لا تُفعّل المصادقة الأساسية على HTTP الصريح أبداً — أنهِ TLS أمام النقطة النهائية المحمية.
- استخدم كلمات مرور فريدة وقوية
- يجب أن يمتلك كل حساب كلمة مرور عالية الإنتروبيا الخاصة به، لا تُعاد استخدامها عبر الخدمات. ولّد كلمة مرور بـ مولّد كلمات المرور العشوائية لدينا وخزّنها في مدير كلمات المرور بدلاً من اختراعها يدوياً.
الأسئلة الشائعة
bcrypt مقابل apr1 — أيهما أختار؟
هل يدعم nginx تجزئة bcrypt؟
$2y$ يفوّض التحقق إلى دالة crypt() في مكتبة C، فيعتمد الدعم كلياً على النظام المستخدم. لا تتضمّن بيئات Alpine musl وإصدارات glibc القديمة مخطط Blowfish (bcrypt)، فتفشل المصادقة بصمت. لإعدادات nginx المحمولة، استخدم تنسيق apr1 عوضاً عن ذلك، إذ يتحقق منه nginx داخلياً على كل المنصات. كيف أُصلح خطأ nginx الخاص بـ crypt_r()؟
أين يجب وضع ملف .htpasswd وما هي الصلاحيات الصحيحة؟
.htpasswd خارج جذر المستندات على الويب لضمان عدم تقديمه كملف ثابت وكشفه. الموقع الشائع هو /etc/apache2/.htpasswd أو /etc/nginx/.htpasswd. اضبط الصلاحيات على 640 (chmod 640) واجعله مملوكاً للمستخدم الذي يعمل خادم الويب تحت اسمه (مثلاً www-data أو nginx)، ليتمكّن الخادم من قراءته دون السماح للحسابات الأخرى بذلك. كيف أضبط المصادقة الأساسية في .htaccess أو nginx؟
.htaccess تتضمّن AuthType Basic وAuthName وAuthUserFile مشيرةً إلى مسار .htpasswd وRequire valid-user. بالنسبة لـ nginx، تولّد كتلة location تحتوي على auth_basic "Restricted"; وauth_basic_user_file /path/.htpasswd;. انسخ كتلة الإعداد المناسبة لخادمك، عدّل مسار الملف، وأعد التشغيل — المقاطع جاهزة للصق. هل تُرفع كلمات المرور إلى أي مكان؟
ما الفرق بين $2a$ و$2b$ و$2y$ في bcrypt؟
$2y$. تتعامل مكتبات bcrypt الحديثة مع $2a$ و$2b$ و$2y$ بالتبادل للتحقق، لذا ستتحقق مدخلة $2y$ المولَّدة هنا بشكل صحيح في Apache وCaddy وTraefik وDocker Registry. ما تكلفة bcrypt التي يجب استخدامها؟
htpasswd مقابل ترويسة Authorization: Basic — ما الفرق؟
.htpasswd بالتجزئة المخزّنة على جانب الخادم — مُقطَّر أحادي الاتجاه يستخدمه الخادم للتحقق من بيانات الاعتماد. ترويسة Authorization: Basic هي بيانات اعتماد الطلب على جانب العميل: ترميز base64 الحرفي لـ username:password الذي يرسله المتصفح أو curl مع كل طلب. يفك الخادم ترميز base64 للترويسة، ثم يتحقق من كلمة المرور مقابل التجزئة المخزّنة. أحدهما تخزين والآخر نقل. ليس لديّ apache2-utils مثبّتاً — كيف أولّد مدخلة htpasswd؟
openssl passwd -apr1 لإنتاج تجزئة apr1، ثم أضف بادئة username: لتكوين السطر. على Debian/Ubuntu يمكنك أيضاً تثبيت الثنائي htpasswd عبر apt install apache2-utils، أو httpd-tools على RHEL/CentOS. ما معنى أعلام htpasswd: -B و-Bbn و-bnB؟
-B يختار bcrypt، -n يطبع النتيجة على stdout بدلاً من كتابة ملف، و-b يأخذ كلمة المرور كوسيطة لسطر الأوامر (بدلاً من الطلب التفاعلي). الترتيب لا يهم، لذا -Bbn و-bnB متطابقان. -Bbn هو التوليفة الشائعة لتوجيه مدخلة bcrypt إلى ملف htpasswd خاص بـ Docker Registry. لماذا يتطلّب Docker Registry تجزئة bcrypt؟
htpasswd -Bbn user password (أو استخدم خيار bcrypt هنا)، ثبّت الملف في حاوية السجل، وأشر REGISTRY_AUTH_HTPASSWD_PATH إليه. اقرن هذا دائماً بـ TLS، إذ تكون بيانات اعتماد المصادقة الأساسية قابلة للقراءة أثناء النقل بدونه. هل المصادقة الأساسية آمنة؟
base64(username:password) مع كل طلب، وترميز base64 قابل للعكس تماماً وليس له أي قيمة أمنية — فأي شخص يمكنه قراءة حركة المرور يستطيع استرداد كلمة المرور فوراً. عبر TLS، تُشفَّر الترويسة أثناء النقل وتكون المصادقة الأساسية مقبولة للتقييد البسيط. لا تستخدمها أبداً على HTTP الصريح، وفضّل مخططات أقوى للتطبيقات عالية القيمة. أدوات ذات صلة
عرض جميع الأدوات →منشئ أوامر cURL وبنّاؤها
الويب وAPI
ابنِ أوامر curl في متصفحك — حدد الطريقة والترويسات والمصادقة والجسم، واحصل على أمر جاهز للنسخ فوراً. إعدادات مسبقة لـ Bearer وPOST JSON ورفع الملفات. مجاني وخاص وبلا تسجيل.
محوّل الأنظمة العددية — ثنائي وست عشري وعشري وثماني
أدوات التحويل
حوّل بين الأنظمة الثنائية والست عشرية والعشرية والثمانية وأي أساس من 2 إلى 36 فوراً — أداة مجانية أونلاين تعمل في متصفّحك. جرّبها الآن.
محوّل Base64 — ترميز وفك ترميز أونلاين
الترميز والتنسيق
رمّز وفك ترميز Base64 مجاناً أونلاين — محوّل فوري مع دعم UTF-8 والرموز التعبيرية. خصوصية 100% — يعمل في متصفّحك. جرّبه الآن.
محوّل حالة الأحرف — UPPERCASE والمزيد
معالجة النصوص
حوّل النص فوراً بين UPPERCASE وlowercase وTitle Case وcamelCase وsnake_case وkebab-case و9 صيغ أخرى. مجاني، يعمل بالمتصفح فقط، بلا تسجيل أو رفع.
محوّل ألوان HEX/RGB/OKLCH
أدوات التحويل
حوّل ألوان HEX إلى RGB و HSL و OKLCH و OKLAB و CMYK داخل متصفحك — انسخ أي صيغة بنقرة واحدة. مجاني، بلا تسجيل، ألوانك لا تغادر الصفحة أبداً.
مولد crontab ومنشئ تعبير cron
التاريخ والوقت
أنشئ تعبيرات cron وتحقق منها وفُكَّها داخل متصفحك. معاينة مباشرة للتشغيل التالي بالتوقيت المحلي أو UTC. صيغة POSIX من خمسة حقول، قوالب جاهزة، ووصف بلغة طبيعية. مجاني، خاص، بلا تسجيل.