Microsoft IIS REST API erlauben von PUT, DELETE

Um beim IIS 7.5 alle HTTP Verben wie PUT, POST, DELETE und PATCH zu aktivieren, muss man in der web.config folgende Module und Handler deaktivieren:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <modules>
         <remove name="WebDAVModule" />
      </modules>
        <handlers>
            <remove name="WebDAV" />
            <remove name="OPTIONSVerbHandler" />
            <remove name="TRACEVerbHandler" />
        </handlers>
    </system.webServer>
</configuration>

Microsoft IIS SSL Zertifikat für localhost erstellen für Chrome 60 mit SAN

Um unter IIS ein Zertifikat für IIS zu erstellen, muss man selber ein SSL Zertifikat erstellen mit openssl (wird bei GIT mitgeliefert in C:\Program Files\Git\usr\bin).

Mit den beiden Befehlen kann man sich eine .pfx Datei erzeugen, die auch unter Chrome 60 läuft mit er Option chrome://flags/#allow-insecure-localhost.

openssl req  -newkey rsa:2048 -x509   -nodes -keyout server.key  -new  -out server.crt  -subj /CN=localhost  -reqexts SAN -extensions SAN  -config openssl.cnf -sha256 -days 36500
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

Man benötigt eine Konfigurations-Datei openssl.cnf: weiterlesen…

Angular 5 URL ohne index.html

Bei einer Angular Anwendung muss man standardmäßig die index.html aufrufen, damit die Anwendung startet auf einem Apache Webserver. Damit dies auch ohne /index.html nur mit der Domain allein (www.foo.de) funktioneirt, muss man folgendes einstellen:

1. Erstellen einer .htaccess Datei in  src/.htaccess mit dem Inhalt:

DirectoryIndex index.html

2. Ändern der Base Url in der src/index.html

<base href="">

3. ggf. hinzufügen der .htaccess zum Build Prozess in der .angular-cli.json

"apps": [
  {
    "assets": [
      "assets",
      "favicon.ico",
      ".htaccess"
    ],

 

Apache Virtual Hosts einrichten unter MAC und Windows

Wenn man eine Seite lokal mit einem Werbserver wie Apache entwicklen will und die URL-Struktur Einfluss auf die Funktonsweise der Webseite hat, empfielt es sich Virtual Hosts einzurichten. Damit kann die Seite im Browser unter der späteren URL wie sebastianviereck.de erreichbar gemacht werden, obwohl Sie für andere noch nicht Online ist oder man die Domain noch nicht besitzt.

Normalerweise ruft man lokale Webseiten mit der URL wie:

http://localhost/sebastianviereck/

auf.

Wenn man stattdessen lieber die URL

http://sebastianviereck.local/

aurufen will, muss man einfach folgendes machen:

1. Die Datei

bei Windows xampp\apache\conf\extra\ httpd-vhosts.conf

bei MAC  /Applications/XAMPP/xamppfiles/apache2/conf/httpd.conf

ändern:

<Directory /xampp/htdocs    >   
    Order Allow,Deny   
    Allow from all 
</Directory>

NameVirtualHost *:80

<VirtualHost *:80>   
    DocumentRoot "/xampp/htdocs"
    ServerName localhost 
</VirtualHost> 

<VirtualHost *:80>   
    DocumentRoot "/xampp/htdocs/sebastianviereck"
    ServerName sebastianviereck.local
</VirtualHost>

2. Die Datei

bei Windows: C:\Windows\System32\drivers\etc\hosts

bei MAC /private/etc/hosts

ändern:

127.0.0.1  sebastianviereck.local
127.0.0.1   localhost   #damit localhost noch funktioniert, am Ende einfügen

3. Apache neu starten.

4. Im Browser erscheint dann bei der Eingabe von sebastianviereck.local die eigene lokale Webseite.

WordPress Sicherheit: sicheres Login

Die sicherste Methode seinen Block zu schützen vor unerlaubten Login ist die Verwendung einer .htpasswd Authentifizierung.

Die Standard Login Seite von WordPress ist nicht sicher, weil Hacker Programme besitzen, die wahrlos Passwörter ausprobieren. Wenn dann noch der Login Namen bekannt ist, weil bei WordPress der Namen des Authors unter den meisten Blog Posts steht, sollte man Wert auf Sicherheit legen.

Auf jeden Fall sollten die automatischen Fehlermeldungen abgeschaltet werden bei falschen Passwort oder falschem Login, welche gefährliche Hinweise geben. Dafür muss nur in die functions.php folgender Code eingegeben werden:

add_filter( 'login_errors', create_function('$a', "return null;"));

Ich empfehle einen .htpasswd Schutz für das /wp-admin/ – Verzeichnis anzulegen.

Die .htaccess Datei gehört auch in das Root – Verzeichnis, bspw:

<Files "wp-login.php">
AuthName "backend"
AuthType Basic
AuthUserFile Root-Pfadwordpress/.htpasswd
require valid-user
</Files>

Der notwendige Root-Pfad kann folgender Maßen bestimmt werden:

echo getcwd(); 

In die .passwd kommen Login und passwort in gehachter Form. Am besten den htpasswd Generator dafür benutzen und die Daten vorher notieren.

Die Leserechte sollten auf 0444 gesetzt werden für diese beiden Dateien, damit Sie nicht überschrieben oder gelöscht werden können.

Sinnvoll ist auch die Leserechte für kritische Dateien und alle php-Dateien einzuschränken in der “Haupt” .htaccess:

<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)">
  order deny,allow
  deny from all
</FilesMatch>

Dies ist besonders wichtig, um Hacker-Bots abzuwähren, die folgender Maßen vorgehen:

Sie suchen im Netz auf Seiten nach bestimmten WordPress-Seiten und verwendeten unsicheren Plugins, z.B. habe ich solche Anfragen protokoliert, was auf Sicherheitslücken der Plugins hindeutet:

"wp-content/themes/clockstone/readme.txt" 
"wp-content/plugins/complete-gallery-manager/readme.txt"

(Diese Themes bzw. Plugins werden bei nicht benutzt)

Profiling mit XDebug und Webgrind

Wenn die Performance einer Webseite nachgibt, stellt man sich oft die Frage, an welche Funktion/Modul liegt der Performanceverlust? Die Lösung ist das Profiling einer Webseite.

Profiling beschäftigt sich der Analyse der Funktionsaufrufe eine Webseite. Es kann dadurch analysiert werden, welche Teile sehr lange brauchen oder welche Funtionen doppelt aufgerufen werden.

Profiling sollte nicht auf einem Produktivsystem ausgeführt werden, weil die Performance einbricht und Ausgaben sichtbar sind. Übrigends: Wer seine Webseite schneller macht, SEO optimiert gleichzeitig. weiterlesen…

PHP mit htaccess debuggen: Error Log

Um die möglichen bei Usern im Betrieb  auftretenden Fehler einer Webseiten zu loggen, empfiehlt sich ein Error Log in der htaccess einzurichten außerhalb des öffentlichen Teils der Webseite. Diese muss via FTP mit Schreibrechten versehen werden.

php_flag log_errors on

php_value error_log /srv/www/vhosts/domain/non-public/PHP_errors.log

php_flag ignore_repeated_errors on

php_flag ignore_repeated_source on

php_value error_reporting 1

Dabei werden keine sich wiederholenden und nur fatal run-time Fehler geloggt.