{"id":58,"date":"2022-03-23T15:42:16","date_gmt":"2022-03-23T14:42:16","guid":{"rendered":"https:\/\/www.zugriffsco.de\/?p=58"},"modified":"2022-10-06T11:33:13","modified_gmt":"2022-10-06T09:33:13","slug":"htaccess-und-htpasswd-erstellen","status":"publish","type":"post","link":"https:\/\/www.zugriffsco.de\/?p=58","title":{"rendered":".htaccess und .htpasswd erstellen"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Selbstverst\u00e4ndlich gibt es Webseiten, auf denen du eine .htpasswd &#8211; Datei erstellen lassen kannst. Was aber, wenn du denen nicht traust? Vielleicht interessiert dich auch nur, wie so etwas geht. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Zun\u00e4chst einmal m\u00fcssen wir wissen, dass die hier stehenden Informationen nur auf einem Apache Webserver funktionieren werden. Warum? Weil der hier verwendete Verschl\u00fcsselungsalgorithmus in Apache integriert ist. Die Zugangsdaten, die wir eingeben, m\u00fcssen auch vom Server gelesen entsprechend ausgewertet werden k\u00f6nnen. Dann ist es wichtig zu wissen, dass eine .htpasswd nicht .htpasswd hei\u00dfen muss. Sie kann auch .abcdefghi hei\u00dfen oder anders. Eurer Fantasie sind hierbei keine Grenzen gesetzt. In der .htaccess (die muss so hei\u00dfen) wird der Pfad zur Passwortdatei (so werde wir die .htpasswd ab jetzt nennen) n\u00e4mlich inklusive des Dateinamen eingegeben. Hier eine typische .htaccess<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AuthType Basic\nAuthName \"Passwortgesch\u00fctztes Verzeichnis\"\nAuthUserFile \/Pfad\/Zur\/Datei\/.htpasswd\nRequire valid-user<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Passwortdatei (.htpasswd) muss auch nicht im ersten Verzeichnis liegen, sondern kann versteckt in einem Unterverzeichnis ihr dasein fristen. Hierdurch entstehen zwei sicherheitsrelevante Vorteile:<br>1. ein potentieller Angreifer wei\u00df nicht wo er suchen soll<br>2. er wei\u00df nicht wie die Passwortdatei heisst (bei uns jedenfalls nicht .htpasswd)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um also eine .htpasswd Datei zu erstellen m\u00fcssen wir in PHP mit PASSWORD_BCRYPT das Passwort verschl\u00fcsseln. Dies ist der Standard seit Apache2. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$filenameIntern = '.\/Verzeichnispfad\/Zur\/Datei\/.htpasswd';\n$newPassword = password_hash($_POST&#91;'password'], PASSWORD_BCRYPT);\n$newEntry = $newUsername . ':' . $newPassword;\n\/\/ Sichergehen, dass die Datei existiert und beschreibbar ist.\nif (is_writable($filenameIntern)) {\n\/\/ Wir \u00f6ffnen $filename_intern im \"Schreib\" - Modus.\nif (!$handle = fopen($filenameIntern, \"w\")) {\necho \"Kann die Datei \" . $filenameIntern . \" nicht \u00f6ffnen\";\nexit;\n}\n\/\/ Schreibe $newEntry in die ge\u00f6ffnete Datei.\nif (!fwrite($handle, $newEntry)) {\necho  \"Kann in die Datei \" . $filenameIntern . \" nicht schreiben\";\nexit;\n}\necho \"Ihre &amp;Auml;nderung wurde &amp;uuml;bernommen!\";\nfclose($handle);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die Datei wurde nun in unserem Wunschverzeichnis gespeichert. Wenn wir jetzt die .htaccess wie oben aufgef\u00fchrt auf den Server kopieren, wird das Verzeichnis wo die .htaccess und alle darin befindlichen Unterverzeichnisse liegt, ab sofort nur noch \u00fcber einen Benutzernamen und ein Passwort zu betreten sein. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ist der Pfad <strong>AuthUserFile \/Pfad\/Zur\/Datei\/.htpasswd<\/strong> falsch angegeben dann erh\u00e4lt man folgende Fehlermeldung:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Internal Server Error.\nThe server encountered an internal error or misconfiguration and was unable to complete your request<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Den Pfad f\u00fcr seine eigene Website bekommt man \u00fcber PHP sehr einfach heraus. Dazu einfach die folgende Datei mit dem Dateinamen <strong>pfad.php<\/strong> erstellen und auf den eigenen Server hochladen und ausf\u00fchren lassen (direkt in dem Unterverzeichnis wo die .htpasswd liegt):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\necho $_SERVER&#91;'SCRIPT_FILENAME'];\n?&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wir erhalten dann eine Ausgabe wie <strong>\/web197\/www\/htdocs\/Verzeichnispfad\/Zur\/Datei\/pfad.php<\/strong><br>Diese Information kopiert Ihr dann und setzt sie in der .htaccess hinter <strong>AuthUserFile<\/strong> ein. Danach sollte alles wunschgem\u00e4\u00df funktionieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00dcbrigens:<\/strong><br>Solltet ihr schon eine .htaccess auf dem Server haben, k\u00f6nnt ihr diese einfach um die oben geschriebenen Zeilen erweitern, sofern diese in dem Verzeichnis liegt das ihr sch\u00fctzen wollt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selbstverst\u00e4ndlich gibt es Webseiten, auf denen du eine .htpasswd &#8211; Datei erstellen lassen kannst. Was aber, wenn du denen nicht traust? Vielleicht interessiert dich auch nur, wie so etwas geht.<\/p>\n","protected":false},"author":1,"featured_media":118,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-58","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","post-preview"],"_links":{"self":[{"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=58"}],"version-history":[{"count":6,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/posts\/58\/revisions"}],"predecessor-version":[{"id":258,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/posts\/58\/revisions\/258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=\/wp\/v2\/media\/118"}],"wp:attachment":[{"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zugriffsco.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}