Sechzehn Sicherheitstipps für Entwickler von WordPress-Plugins und -Themes
Veröffentlicht: 2021-10-19Man kann nie zu vorsichtig sein!
Ein großer Teil unserer Arbeit als Entwickler besteht darin, sicherzustellen, dass die von uns erstellten Websites und Plugins sicher sind.
Unternehmen benötigen schnellere Lösungen mit immer komplexeren Funktionen. Während dies ein guter Fortschritt ist, erfordert der Aufbau komplexer Projekte auch eine angemessene Sicherheitseinrichtung. WordPress-Sicherheit ist einer der wichtigsten Aspekte der Website-Entwicklung.
Mit der zunehmenden Komplexität der Funktionen verpassen viele Entwickler grundlegende Sicherheitsprinzipien für die Entwicklung von Websites und Webanwendungen. Dies führt zu einer fehlerhaften Website, die für Cyberangriffe und andere Risiken anfällig ist.
Daher ist es wichtig, dass Sie beim Erstellen Ihres Projekts einige grundlegende Sicherheitsprotokolle für die Entwicklung von Websites und Webanwendungen implementieren.
Nachfolgend finden Sie 16 Sicherheitstipps für Webentwickler, die Ihnen dabei helfen werden, Ihre Website sicher und zuverlässig zu halten.
1. Finden Sie heraus, welche Daten geschützt werden müssen
Einer der wichtigsten Sicherheitsgrundsätze für die Entwicklung von Websites ist, dass Sie nur die erforderlichen Daten speichern müssen.
Wenn Sie ein Projekt entwickeln, müssen Sie sich diese drei Fragen stellen:
- Welche Daten muss das Unternehmen speichern?
- Welche sensiblen Daten muss das Unternehmen verschlüsseln?
- Wenn die Daten aus irgendeinem Grund kompromittiert werden, wie sehr könnte dies dem Unternehmen schaden?
Je mehr sensible Daten Sie speichern, desto größer ist das Risiko einer Offenlegung. Wenn Sie die sensiblen Daten speichern müssen, müssen Sie sie verschlüsseln, damit sie schwer zugänglich sind.
2. Implementieren Sie Rollenverwaltung und Zugriffskontrolle
Beim Entwerfen einer Website, eines Plugins oder eines Designs ist es wichtig, den Benutzern die geringstmöglichen Berechtigungen zu gewähren.
Berechtigungen sollten eingeschränkt werden, sodass der Benutzer nur das erhält, was er benötigt, und keinen Zugriff auf andere Bereiche hat.
Zum Beispiel sollten Mitwirkende darauf beschränkt werden, neue Beiträge und Seiten zu erstellen, aber nicht zu veröffentlichen. Redakteure sollten in der Lage sein, neue Beiträge zu erstellen und zu veröffentlichen, aber nicht das Design oder die Plugins ändern können.
Stellen Sie in ähnlicher Weise sicher, dass Sie während der Installation neue WordPress-Benutzerrollen erstellen, während Sie eine bestimmte Funktionalität in Ihrem Plugin oder Design entwickeln, die Sie einschränken möchten. Machen Sie die Administratoren darauf aufmerksam, damit den jeweiligen Benutzern, die das von Ihnen entwickelte Plugin oder Design verwenden werden, die richtigen Rollen zugewiesen werden.
Hier ist eine schnelle bildliche Darstellung, wie die Struktur aussieht.
Dieser Ansatz minimiert Probleme, da wir den Schaden begrenzen können, den ein Eindringling anrichten kann. Sie können auch den Schaden begrenzen, der durch Fehler oder Fehler eines neugierigen Benutzers verursacht wird, der in Bereichen einer Website herumspielt, die er wirklich nicht sein sollte.
Außerdem müssen Sie den Zugriff innerhalb des Entwicklungsteams je nach Rolle einschränken.
3. Wenden Sie die Authentifizierung an
Die Website-Authentifizierung ist der Sicherheitsprozess, der es Benutzern ermöglicht, ihre Identität zu überprüfen, um Zugriff auf eingeschränkte Bereiche einer Website zu erhalten.
Während der Entwicklung eines Designs oder Plugins haben Sie bestimmte Daten, die eingeschränkt werden müssen, während einige Daten für die Benutzer sichtbar sind. Daher ist es wichtig, dass Sie dem Code Überprüfungen hinzufügen, um zu überprüfen, ob der Benutzer, der auf eingeschränkte Daten zugreift, authentifiziert ist und die richtige Benutzerrolle hat.
In ähnlicher Weise können Sie beim Erstellen einer Website effektive Methoden zur Kontoverwaltung implementieren, z. B. starke Kennwortdurchsetzung und Multifaktor-Authentifizierung, um Benutzerdaten zu schützen.
Die Zwei-Faktor-Authentifizierung ist eine der beliebtesten Methoden zur Implementierung der Authentifizierung.
Die Zwei-Faktor-Authentifizierung (2FA) ist ein zweistufiger Prozess, bei dem Sie neben Ihrem Website-Passwort einen zusätzlichen Code oder ein Einmalpasswort (OTP) benötigen, um sich auf Ihrer Website anzumelden. Dieses OTP wird normalerweise per SMS, Telefonanruf oder einer anerkannten 2FA-Anwendung wie Google Authenticator, Authy, Duo Security und vielen mehr an ein anderes Gerät gesendet. Die Implementierung von 2FA schützt Sie vor Brute-Force-Angriffen.
Wenn Sie Ihre Website in WordPress erstellen, sehen Sie sich diese unglaublichen Tools an, mit denen Sie Ihre Website sichern können.
- Anmeldeversuche begrenzen: Dieses Tool schützt Sie vor Brute-Force-Angriffen, indem es die Anzahl der Anmeldeversuche begrenzt. Es umfasst auch Anti-Spam und eine automatische Abmeldung inaktiver Benutzer.
- WP2 FA: Mit dem WP2FA-Plugin können Sie Ihrer Website im Handumdrehen eine Zwei-Faktor-Authentifizierung hinzufügen. Es unterstützt auch mehrere 2FA-Apps wie Google Authenticator, Authy, FreeOTP, Duo Security und mehrere andere.
- Shield Security: Dieses Plugin unterstützt keine 2FA-Apps wie Google Authenticator und SMS 2FA, es ist jedoch nützlich für diejenigen, die YubiKey verwenden.
- WPassword: Dieses Plugin hilft Ihnen, sichere Passwörter für Ihre WordPress-Website durchzusetzen, Benutzer mit zu vielen fehlgeschlagenen Anmeldeversuchen zu blockieren und vieles mehr. Es lässt sich nahtlos in WooCommerce und andere Plugins von Drittanbietern integrieren.
4. Überprüfen Sie Ihr Design oder Plugin, bevor Sie es freigeben
Bevor ein Design oder Plugin veröffentlicht wird, müssen Sie sicherstellen, dass Ihr Code so fehlerfrei wie möglich ist. Sie können bestimmte Composer-Abhängigkeiten verwenden, um Schwachstellen in Ihrem Code zu erkennen.
Einige der empfohlenen Abhängigkeiten für WordPress-Websites sind:
- Wpthemereview
- Wp-Codierungsstandards
Diese Codierungsstandards haben strenge Codierungsregeln, wie z. B. die Daten immer mit Escapezeichen zu versehen, bevor sie gedruckt werden, Nonce für alle Anforderungen zu verwenden, Anforderungsdaten vor der Verwendung zu bereinigen, ordnungsgemäße Benutzerberechtigungen bereitzustellen und vieles mehr, um Ihren Code zu sichern.
Diese Tools sind großartig, wenn Sie Ihr eigenes Design oder Plugin entwickeln.
Sie sollten sich auch den WPScan Security Scanner ansehen. Es ist ein großartiger Online-Website-Sicherheitsscanner, der Ihre Website auf Schwachstellen überprüft.
5. Vermeiden Sie bestimmte PHP-Funktionen
Bestimmte PHP-Funktionen wie eval() und unserialize() können Systemdaten offenlegen und dazu führen, dass die Serverdaten offengelegt werden, was dazu führen kann, dass der Server heruntergefahren wird oder der Hacker auf alle Serverinformationen zugreift.
Hier sind einige PHP-Funktionen, die Sie nach Möglichkeit vermeiden sollten:
eval() : eval kann beliebigen PHP-Code ausführen. Es könnte Ihre Codes Injektionsangriffen aussetzen, wenn es nicht richtig verwendet wird.
serialize() oder unserialize(): Verwenden Sie serialize() oder unserialize() nicht mit Benutzereingaben. Angreifer können diese Funktionen ausnutzen. Sie können einen String mit einem serialisierten beliebigen Objekt übergeben, um beliebigen Code auszuführen.
md5() : Das Internet ist voll von Rezensionen über kryptografische Schwächen von md5() 1 und gilt als unsicher. Verwenden Sie eine bessere Hash-Funktion wie SHA-2.
sha1() : sha1() ist eine weitere Hash-Funktion, die aufgrund der Schnelligkeit von Hash-Algorithmen nicht verwendet werden sollte. Es wird empfohlen, in jedem modernen Framework den SHA-2-Hashing-Algorithmus anstelle von md5() zu verwenden.
6. Verwenden Sie Linters, um Probleme im Code zu finden
Ein Lint-Tool ist ein grundlegender statischer Code-Analysator, der Ihren Quellcode auf programmatische und stilistische Fehler überprüft. Linters Ausgangston sollte freundlich sein, um das Projekt voranzubringen.
Lint-Codes sind eine großartige Möglichkeit, potenzielle Schwachstellen zu finden und Fehler bei der Entwicklung einer Website oder App zu reduzieren. Sie können bestimmte Sicherheits-Linters für die PHP-, JS- und HTML-Entwicklung verwenden.
Hier sind einige bemerkenswerte Tools für die statische Analyse Ihres PHP-Codes:
- PHP-Parallel-Lint
- SonarLint
- Psalm
- PHP-Lint
Sie können SonarLint auch für HTML- und Javascript-Linting verwenden.
Andere bemerkenswerte JS-Linters sind:
- JS Lint
- ES Fussel
7. Entfernen Sie unbenutzten Code und Plugins
Mit immer komplexerer Software steigt auch das Potenzial für Schwachstellen im Code. WordPress-Themes und Plugins sind nicht anders. Die ständig wachsenden Funktionen von Codes wie HTML5, CSS und JavaScript ermöglichen es Entwicklern, umfangreiche Webanwendungen zu erstellen.
Die zunehmende Komplexität der Anwendungen ist jedoch ein zweischneidiges Schwert. Während sie dazu beitragen, die von Benutzern erwarteten Funktionen bereitzustellen, erweitern sie auch die Angriffsfläche der Anwendung. Eine Maßnahme, um mit einer solchen Schwachstelle umzugehen, besteht darin, den nicht verwendeten Code zu entfernen.
Verschiedene Benutzer benötigen möglicherweise nicht alle Funktionen einer Website oder einer Webanwendung. Indem Sie unnötige Funktionen basierend auf Benutzeranforderungen in jeder Bereitstellung entfernen, können Sie Angriffsflächen und das damit verbundene Risiko reduzieren.
Wenn Sie es lieben, Websites in WordPress zu entwickeln, empfehlen wir Ihnen, sich für Themen und Plugins zu entscheiden, die Ihre Anforderungen erfüllen und gleichzeitig leicht in Bezug auf ihren Code sind. Sie schützen nicht nur Ihre Website, sondern helfen auch bei der Suchmaschinenoptimierung. Hier sind einige der besten leichten und schnellsten verfügbaren WordPress-Themes.
8. Verwenden Sie serverseitige und clientseitige Validierung
Wenn Sie gerne benutzerdefinierte Codes schreiben, ist es wichtig, sowohl die clientseitige als auch die serverseitige Validierung zu verwenden. Die clientseitige Validierung schützt vor häufigen Fehlern des Benutzers, wie z. B. der falschen Eingabe von Daten oder dem Vergessen von Feldern. Eine solche Validierung fängt ungültige Daten ab, bevor sie den Server erreichen, was Zeit und Geld spart.
Stellen Sie sich vor, wenn die clientseitige Validierung erst erfolgt, nachdem ein Roundtrip zum Server fehlgeschlagen ist, werden Sie mit Verzögerungen konfrontiert, wenn Sie den Benutzern mitteilen, was sie falsch gemacht haben, ohne dass sie ihre Fehler sofort beheben können.
Die clientseitige Validierung allein reicht jedoch als Sicherheitsmaßnahme nicht aus. Sie müssen auch die serverseitige Validierung verwenden. Die serverseitige Validierung schützt Sie vor böswilligen Eingaben und anderen Angriffsvektoren.
9. Alle Benutzereingaben bereinigen und Daten anfordern
User Input Sanitization ist eine Cybersicherheitsmaßnahme zum Auditieren, Säubern und Filtern von Daten von Benutzern und APIs von nicht autorisierten oder unerwünschten Zeichen und Zeichenfolgen, um das Einschleusen von schädlichem Code in das System zu verhindern.
Hacker können bestimmte Befehle einschleusen und Aktionen ausführen, die die Sicherheit Ihrer Website gefährden können. Die Eingabebereinigung trägt zur Wahrung der Datenintegrität bei und verbessert die Systemsicherheit.
10. Wenden Sie dauerhafte Korrekturen an
Während Sie eine Sicherheitsüberprüfung durchführen, bemerken Sie möglicherweise einige Schwachstellen, die von Zeit zu Zeit wieder auftauchen. Sie müssen die Grundursache der neuen Schwachstellen ermitteln, damit Sie sie dauerhaft beseitigen können, anstatt einen Teilpatch hinzuzufügen.
Zum Beispiel stoßen Sie sehr oft auf SQL / XSS-Probleme in dem von Ihnen entwickelten Design oder Plugin. Anstatt in einem solchen Fall eine Bereinigungsprüfung für jede Eingabe zu erstellen, erstellen Sie eine Funktion/Klasse und legen Sie fest, dass bei jeder Benutzereingabe alle Daten durch diese Klasse/Funktion geleitet werden sollen.
11. Vermeiden Sie Sicherheitsfehlkonfigurationen und Standardeinstellungen
Sicherheitsfehlkonfigurationen treten auf, wenn Sicherheitseinstellungen nicht definiert und implementiert werden und Standardwerte beibehalten werden. Das Versäumnis, Sicherheitskontrollen zu implementieren oder sie mit Fehlern zu implementieren, kann die Wahrscheinlichkeit erhöhen, dass das von Ihnen erstellte Design, Plugin oder die Website Schwachstellen aufweist.
Fehlkonfigurationen treten häufig auf, weil ein System, Datenbankadministrator oder Entwickler das Framework einer Anwendung nicht richtig konfiguriert hat, was zu gefährlichen offenen Pfaden für Hacker führt.
Stellen Sie sicher, dass die Standardeinstellungen sicher sind, und legen Sie Passwörter nicht automatisch fest (falls erforderlich). Wenn das Plugin beispielsweise ein Verzeichnis verwendet, in das Benutzer Dateien hochladen können, bitten Sie die Benutzer immer, ihre Kennwörter und den Verzeichnispfad festzulegen.
12. Halten Sie sich informiert und auf dem Laufenden
Cybersicherheit ist ein sich ständig weiterentwickelnder Bereich. Sie müssen sich über die neuesten Sicherheitsupdates und neu auftretende Risiken im Klaren sein, damit Sie mit den Entwicklungen Schritt halten und neue und aufkommende Bedrohungen in Ihrem Code mindern können.
Als Entwickler hilft es, sich über Neuigkeiten auf dem Laufenden zu halten und sichereren Code zu schreiben, was die Best Practices sind, um die Codierung zu sichern, Code besser zu bereinigen und Benutzereingaben besser zu verarbeiten.
Folgen Sie dazu Experten online und halten Sie sich mit Ihrem bevorzugten Webentwicklungsblog auf dem Laufenden. Sie lesen diese bereits. Sie haben also einen guten Start.
Hier sind einige der besten Ressourcen zum Thema WordPress-Sicherheit.
- WP White Security-Blog
- WordFence-Blog
- Sucuri-Blog
13. Pflegen Sie den Code
Der Code, den Sie heute schreiben, ist morgen möglicherweise nicht mehr sicher. Es tauchen ständig neue Schwachstellenvarianten auf, und es muss auch von Seiten der Entwickler ständig aktualisiert werden.
Wenn Sie einem Plugin oder Design neue Funktionalitäten hinzufügen, überprüfen Sie, ob dies nicht die Sicherheit anderer Module oder Klassen oder Funktionen im Code beeinträchtigt. Falls dies der Fall ist, müssen Sie den Code aktualisieren, um die Probleme zu beheben.
Sie können auch Tools wie GitHub verwenden, um den Code Ihres Designs oder Plugins zu pflegen. Es hilft Ihnen, den Code zu verfolgen und Probleme schneller zu beheben. Sicherheit entwickelt sich immer weiter. Um mit den neuesten Trends Schritt zu halten, ist es wichtig, Ihre Sicherheitstests ständig zu erneuern, damit Sie Schwachstellen finden und verbessern können.
14. Aktualisieren Sie Ihre Softwarepakete regelmäßig
Es ist ein Kinderspiel.
Halten Sie Ihre Softwarepakete wie PHP, Javascript, HTML und andere auf dem neuesten Stand, um neue Sicherheitsprobleme zu lösen. Die Verbesserung der Softwaresicherheit ist immer ein ständiges Anliegen, und zu diesem Zweck halten wir uns immer mit der neuesten Version dieser Software auf dem Laufenden.
15. Arbeiten Sie mit Ihrem Team zusammen
Beachten Sie die Sicherheitstickets, die bei Ihrem Support-Team erhoben werden. Wenn Ihre Kunden Sicherheitsprobleme melden, machen Sie es zu einer Priorität, diese zu beheben. Ihr Endbenutzer gibt das beste Feedback zu Ihrer Arbeit, also nutzen Sie es gut!
Besprechen Sie Sicherheitsprobleme mit dem Entwicklungsteam und stellen Sie sicher, dass jeder Patch, den Sie entwickeln, das Sicherheitsproblem behebt und nichts anderes beschädigt, bevor Sie ihn veröffentlichen. Wenn Sie häufig mit Teamkollegen zusammenarbeiten oder mit großen Kunden zusammenarbeiten müssen, die ganze Abteilungen in den Support einbeziehen, ist es eine gute Idee, eine Webinar-Software zu verwenden, um den Prozess zu erleichtern.
16. Bereiten Sie sich auf das Worst-Case-Szenario vor
Sie können nicht zu vorsichtig sein. Das Web und alles, was im Web veröffentlicht wird, kann niemals 100 % sicher sein. Sie können jedoch Maßnahmen ergreifen, die dazu beitragen können, die Risiken zu mindern.
Der Schlüssel liegt in der Bewertung potenzieller Schwachstellen und der Entwicklung einer angemessenen Risikoreaktion mit angemessenen Sicherheitsmaßnahmen. Neue Angriffstechniken tauchen häufig auf, daher müssen sich auch Best Practices als Teil dieses Prozesses weiterentwickeln.
Wenn beispielsweise eine WordPress-Website gehackt wird, sollte der Notfallplan enthalten, was im Falle eines Hacks zu tun ist. Das müsste Backup-Methoden, den Bereinigungsprozess und die Schritte enthalten, die zum Wiederaufbau der Website und zum Wiederherstellen des Dienstes erforderlich sind.
Ein solcher Plan ermöglicht es allen Beteiligten, Probleme schnell zu beheben, ohne von einer Informationsüberlastung überwältigt zu werden oder mit unnötigen Maßnahmen überzureagieren.
Abschließende Gedanken
Was kannst du noch tun, um die Sicherheit deines Themes oder Plugins zu verbessern? Nun, viele Dinge. Sie sehen, das Schreiben von sicherem Code ist keine einmalige Sache. Technologien entwickeln sich weiter und Angriffsmethoden entwickeln sich mit ihr weiter.
Die Realität ist, dass Sie nicht alle Cyberangriffe verhindern oder jedes denkbare Risiko mindern können. Ihr Ziel sollte es sein, so viel wie möglich aus dem zu machen, was Sie haben, und Ihren Code ständig zu überarbeiten, um ihn zu verbessern.
Erstellen Sie einen gut definierten Sicherheitsplan für Ihre Website und seien Sie auf das Schlimmste vorbereitet. Stellen Sie sicher, dass sicherheitsrelevante Tickets oder Berichte die höchste Priorität haben.
Veröffentlichen Sie einen Blogbeitrag oder eine Ankündigung in Ihrer Community, dass Sie eine Sicherheitskorrektur veröffentlicht haben, damit alle Ihre Benutzer ihre Websites aktualisieren und verhindern können, dass sie kompromittiert werden.
Cybersicherheit unterscheidet sich nicht sehr von einer militärischen Strategie. Der Schlüssel ist die Bereitschaft! Hoffentlich hat Ihnen dieser Beitrag bei Ihrer Vorbereitung geholfen. Teilen Sie uns in den Kommentaren mit, welche Maßnahmen Sie ergreifen, um die Sicherheit Ihrer Website zu verbessern.
In diesem Artikel verwendete Referenzen
↑ 1 | https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C |
---|