להשתמש ב .htaccess כדי לאפשר גישה לאתר (או סיפריה) רק לבעלי שם-משתמש וסיסמא

הסיבה לפוסט: נתבקשתי לחסום גישה (באמצעות סיסמא) לאתר שאני עובד עליו. חיפשתי ומצאתי איך לעשות זאת, וגיליתי שזה לוקח יותר מ- 10 דקות לגלות (בגלל באגים, כרגיל), אז אני שמח לחלוק איתכם את מה שמצאתי עד כה, לבאים שירצו עזרה (בין אם אתם מקימים אתרי וורדפרס, וויקי, דרופל, ג’ומלה או אחרים). אני גם מדגיש שאני לא איש אבטחת מידע, לכן לא אופתע לגלות שיש דרכים נכונות ובטוחות יותר לבצע את מה שאני מציע פה. אך כבסיס, לפחות כמס-שפתיים, זה עושה את העבודה.

המטרה: לחסום גישה לתיקיה באתר (או לאתר כולו), כך שרק בעלי שם-משתמש+סיסמא יוכלו להכנס (ברמת השרת).

הכלי:  העלאת שני קבצים – .htaccess   +  .htpasswd לשרת (באמצעות FTP).

הרעיון:  מייצרים קובץ שנותן הוראה לשרת לחסום גישה למי שאיננו המשתמש (זהו קובץ ה- .htaccess) ומעלים אותו לסיפריה שרוצים לחסום. ואז יוצרים עוד קובץ שמכיל שם משתמש וסיסמא (.htpasswd) ומניחים אותו איפשהו בשרת (אני הנחתי אותו באותה סיפריה אליה הכנסתי את ה- .htaccess , זה לא נחשב אופטימאלי מבחינת הגנה, אבל לצורך ההסבר זה סביר. רצוי לשנות את מיקום הסיפריה הזו למשהו אחר בשרת ולעדכן את שורת הקוד המתאימה בקובץ ה- htaccess, כפי שיוצג מיד).

השלבים:

  • צרו קובץ .htaccess. הדרך שבה אני עשיתי זאת הייתה לפתוח קובץ txt חדש, ולשמור (file -> save as)  אותו בשם   .htaccess  (לשים לב שה- save as type – צריך להיות all files)
  • עריכת קובץ ה- .htaccess (ולבסוף העלאתו לשרת,לתיקיה עליה רוצים להגן),  יש להכניס לתוכו את הקוד הבא:

AuthType Basic
AuthName “restricted area”
AuthUserFile /home/humus101/public_html/someWebsiteIwant2Protect/.htpasswd
require valid-user

השורה השלישית צריכה להיות ה- full server path to your htpasswd file. כדי למצוא את הקידומת של ה- full server path, העליתי לשרת (לתיקיה אליה רציתי לבצע את ההגנה), קובץ ששמרתי בשם 1.php, אשר התוכן שלו היה הקוד:

<?php
phpinfo();
?>

ובתוכו מצאתי את הערך “DOCUMENT_ROOT ” – ולאחריו הוספתי את ה:    /.htpasswd

עוד הערה על .htaccess, כדי שהקובץ יעבוד, צריך לשמור אותו בפורמט unix. (אני עובד ב- notepad++, ושם יש לבחור את האופציה: format-> convert to unix format )

  •  עריכת קובץ ה –   .htpasswd :   אני בחרתי להשתמש רק בשם משתמש וסיסמא אחת למניעת גישה לאתר. את הקובץ יוצרים כמו שיוצרים את קובץ ה- .htaccess (שמירה בשם של קובץ txt), והשורה שצריך להכניס לתוכו היא מהצורה:

username:scrumbled_passWord

לדוגמא,נניח שאני רוצה שם-משתמש tal וסיסמא hello. אז הקובץ שלי היה אמור להכיל את השורה:

tal:hello

אבל זה לא מדוייק, כי את ה- hello  אני צריך לקודד לאיזה משהו אחר. לשם כך, אני הולך לכלי שמבצע קידוד מתאים, לינק: http://www.htaccesstools.com/htpasswd-generator

שמראה לי שהקוד שאני באמת צריך להכניס לקובץ .htpasswd הוא:

tal:aG1dYAU.hgL3A

עידכנתי את הקובץ, והעליתי אותו לשרת. וזהו, עובד כמו קסם.