Schlagwort-Archive: tools

WordPress Sicherheit

Auf be-jo.net gibt es gerade ein paar Tipps zum Absichern von WordPress. Dazu hier noch mal ein paar ergänzende Tipps:

  • Im Admin-Backend ausschließlich TLS nutzen, oder einfach gleich auf der ganzen Seite.
  • BACKUPS!!!!11!!!!1elf
  • Nicht admin als Admin-Username benutzen
  • Datenbank-Tabellen einen (zufälligen) Prefix geben. Da WordPress bis heute darauf verzichtet auf sichere Art und Weise mit der Datenbank zu kommunizieren (s.g. prepared statements) können immer wieder SQL-Injection-Lücken auftauchen, sowohl bei WordPress selbst, wie auch bei den genutzen Plugins (und das passiert auch bis heute regelmässig). Um nicht Opfer von (billigen) automatisierten Angriffen zu werden reicht häufig ein Prefix
  • Zugriff auf wp-config.php webserverseitig verbieten. Aus unterschiedlichen Gründen könnte PHP mal nicht laufen. Per default würde die wp-config.php dann einfach als Text ausgeliefert werden, so dass extern die Datenbank-Passwörter und Security-Keys bekannt wären.
  • Dateirechte so weit wie möglich begrenzen. Je nach Webserverkonfiguration sind z.B. diese Werte sinnvoll:
    755 für alle Ordner, 644 für alle Dateien, 600 für wp-config.php
  • Mit iThemes Security das WordPress-Backend verstecken bzw. unter einer anderen URL zugänglich machen als wp-login.php bzw wp-admin. Das ist ganz klar security-by-obscurity, sollte man aber gerade bei prominenten Seiten machen, um sich schon mal einige Idioten vom Hals zu halten.

How to Opensource? Der Hacktober ruft!

Es ist wieder soweit. Github und Digitalocean haben das Hacktoberfest ausgerufen. Wenn man bei beliebigen Github-Repositories im Oktober mindestens drei Pull-Requests erstellt gibt’s ein „Ich-War-Dabei“-T-Shirt. Ob man zum Code oder zu Dokumentation beiträgt spielt keine Rolle.

An sich eine hübsche Aktion, um Opensource-Beteiligung zu fördern. Vor dem Hintergrund möchte ich hier noch mal erläutern, wie man bei Github an Projekten mitarbeitet. Für Gitlab/Gitea/Bitbucket usw. gelten die Hinweise natürlich auch. Inspiration ist Davide Coppola’s großartiger Artikel zum Thema.

1. Follow the rules

Die meisten Projekte haben Regeln dazu, wie und in welcher Form man Code (oder Dokumentation) beisteuern kann. Diese finden sich meist in einer CONTRIBUTING.md oder ansonsten direkt in der README. Das sollte man sich wenigstens mal kurz angeschaut haben. Danach kann man in den bestehenden Issues und Pull-Requests schauen, ob vielleicht schon jemand an dem Problem arbeitet.

Bevor man mit einem größeren Unterfangen beginnt ist es oft auch sinnvoll kurz in einem Issue nachzufragen, ob dies überhaupt erwünscht oder sinnvoll ist. Damit erspart man sich den Ärger viel Arbeit zu leisten, die am Ende abgelehnt wird weil der Autor z.B. selbst eine noch nicht veröffentlichte Lösung für das Problem geschrieben hat.

2. Fork it!

Der eigene Beitrag beginnt immer mit einem Fork. Dazu klickt man auf der Projekt-Seite oben rechts auf den Fork-Button. Das Projekt wird nun in den eigenen Namespace (unter den eigenen Nutzernamen) kopiert. Man wird automatisch auf die eigene Github-Seite umgeleitet.

3. Clone it

Als nächstes will man das Repository auf den eigenen Rechner klonen. Die Adresse dazu bekommt man mit einem Klick auf den grünen Clone-Button. Wichtig ist, dass man hier gleich SSH auswählt. Dazu muss man bei seinem Github-Konto ebenfalls einen SSH-Schlüssel hinterlegt haben (darauf gehe ich hier nicht näher ein, beantworte aber gern Fragen).

git clone git@github.com:USERNAME/PROJECTNAME.git

Nun hat man das Repository lokal auf dem Rechner und verbunden mit dem Fork auf Github. Für spätere Updates ist es eine gute Idee, auch eine Verbindung zum Ursprungs-Projekt (upstream) anzulegen. Diese Verbindungen nennt man remotes.

git remote add upstream git@github.com:PROJECT_USERNAME/PROJECTNAME.git

Der Remote-Name ist frei wählbar, upstream ist jedoch eine gängige Konvention für die ursprüngliche Quelle während das remote auf dem man selbst arbeitet origin genannt wird. Zur Kontrolle lassen wir uns die remotes noch mal anzeigen:

git remote -v

origin    git@github.com:USERNAME/PROJECTNAME.git (fetch)
origin    git@github.com:USERNAME/PROJECTNAME.git (push)
upstream  git@github.com:PROJECT_USERNAME/PROJECTNAME.git (fetch)
upstream  git@github.com:PROJECT_USERNAME/PROJECTNAME.git (push)

4. Branch erstellen

Bei kleinen Änderungen kann man diesen Schritt auch überspringen. Besonders, wenn man ansonsten nichts weiter zu dem Projekt beiträgt und das Repository ohnehin bald wieder vom Rechner löscht. Man sollte es sich trotzdem gleich richtig angewöhnen, so viel Mehraufwand ist es auch nicht:

git checkout -b BRANCH_NAME

Als BRANCH_NAME wählt man etwas beschreibendes wie fix-menu-error oder issue-12345. Die lokalen branches und die aktuell aktive branch kann man sich mit git branch anzeigen lassen.

5. hackhackhack

Nun kann man in der eigenen branch am Problem oder am neuen Feature werkeln. Dabei ist jedoch eines zu beachten. Wärend der eigenen Arbeit kann es gut sein, dass am Hauptprojekt weitergearbeitet wird. In der Regel wird gefordert, dass neue Beiträge immer auf dem aktuellsten Commit des Projekts basieren. Man hört dann Dinge wie „please rebase to upstream master“.

Das geht so und sollte mindestens kurz vor dem Pull-Request ein mal gemacht werden:

git pull --rebase upstream master

Was passiert kann man sich in der Git-Dokumentation in Grafiken anschauen. Kurzgesagt: Die eigenen Commits werden kurz beiseite gelegt. Es werden die neuen commits aus upstream/master eingepflegt (so dass die Reihenfolge die gleiche wie im upstream ist) und dann die eigenen commits wieder eingespielt. Diese sind nun wieder „am Ende der Kette“.

6. Pull-Request

Die fertige (oder auch unfertige) Arbeit kann man mit

git push origin BRANCH_NAME

in das eigene Github Repository hochladen. Öffnet man dieses im Browser kann man dort den Pull-Request erstellen.

7. Abwarten, Abändern

Die Maintainer werden über den Pull-Request informiert. Kommentare dazu bekommt man per Mail und auf Github. Sollen noch Änderungen eingepflegt werden macht man das ganz einfach lokal und pusht sie wie vorher in das Github Repository. Sie tauchen dann direkt im Pull-Request auf. Man kann beim Erstellen des Pull-Requests den Entwicklern auch die Möglichkeit geben direkt selbst Änderungen an diesem vorzunehmen.

8. Aufräumen

Wenn der Pull-Request angenommen (oder abgelehnt) wurde, kann man die lokale und die remote Branch löschen:

git checkout master
git branch -D BRANCH_NAME
git push origin --delete BRANCH_NAME

Updaten

Will man den Fork lokal und auf Github behalten, sollte man ihn regelmäßig mit upstream synchronisieren:

# die Upstream-Änderungen holen
git fetch upstream master
# lokal zu master wechseln
git checkout master
# die lokale master branch auf upstream/master updaten
git merge upstream/master

So, nun loslegen und viel Spass beim Hacktoberfest!