Die 5 besten Möglichkeiten, WordPress-Schwachstellen zu beheben
Veröffentlicht: 2020-02-01Derzeit deckt WordPress 33 % des Webs ab. Dies bedeutet, dass eine große Anzahl von Benutzern es verwendet, was definitiv mehr Angreifer und Hacker anziehen wird. Aus diesem Grund gibt es mehr Bedrohungen und Angriffe wie SQL-Injection-Angriffe, Umleitungsangriffe, CSRF-Angriffe, XSS-Angriffe usw., die eine Schwachstelle in WordPress verursachen. Aus diesem Grund bedeutet dies nicht, dass WordPress nicht sicher ist. Wir müssen uns auf Datenbereinigung, Datenvalidierung, Daten-Escape, Verwendung und Überprüfung von Nonce, sichere Umleitung, Benutzerfunktionen usw. konzentrieren, um WordPress sicher zu machen. Die Sicherheitslücken in WordPress machen es jedoch unsicher. Lassen Sie uns also über WordPress-Sicherheitsprobleme sprechen.
Sicherheitslücken treten auch in WordPress auf. Aber wie?
Einerseits gibt es große Bedrohungen und Angriffe aufgrund der WordPress-Schwachstelle . Auf der anderen Seite müssen wir diese Angriffe während der WordPress-Entwicklung mit unserem Code überwinden oder verhindern.
Auch wenn Sie kein WordPress-Entwickler sind, empfehlen wir Ihnen, den Beitrag zu lesen, da Sie in der Lage sein werden, die wichtigsten Angriffe zu kennen, die Hacker dazu verleiten, Ihre Website anzugreifen. Und Sie werden auch in der Lage sein, schlecht codierte Plugins und Themes von WordPress zu kennen. Wenn Sie einen Online-Shop betreiben, ist es für Sie hilfreich, die besten WooCommerce-Plugins und -Themes zu bestimmen, die sicher sind.
WordPress-Sicherheitslücken
Woher kommen die anfälligen Codes?
Zunächst sollten wir ein gutes Verständnis dafür haben, wo die WordPress-Sicherheitsprobleme liegen. WordPress besteht aus WordPress-Kerncode, Themen und Plugins, die Php, Html, Javascript und andere Codes enthalten.
Die Open-Source-Community prüft den WordPress Core Code. Es gibt eine große Anzahl von Leuten, die den Fehler melden und die Schwachstellen beheben und sich dafür rühmen. Die Schwachstelle in WordPress kann durch SQL-Injection-Angriffe, CSRF-Angriffe, XSS-Angriffe, Umleitungsangriffe und andere ähnliche Techniken ausgenutzt werden. Die WordPress-Schwachstelle aus der Kernentwicklung ist also nicht viel.
Weder interagieren die Themen normalerweise mit wp-Datenbanken, noch ändern die Websites häufig die Themen. Da Gutenberg der Standard-Editor von WordPress ist, müssen wir für eine bessere Leistung und Sicherheit Gutenberg-kompatible WordPress-Designs auswählen. Es treten also weniger Schwachstellen auf.
Andererseits haben WordPress-Plugins komplexe Funktionen und Verhaltensweisen. Außerdem ist die Interaktion mit Benutzern und Datenbanken hoch. Die Website enthält eine große Anzahl von Plugins für externe Funktionen. Infolgedessen können sie eine große Anzahl von Schwachstellen auf die Website bringen. Plugins führen große Sicherheitslücken in WordPress ein.

Laut wpscan.org stammen 11 % der Schwachstellen von Themes, während 37 % der Schwachstellen aus der Entwicklung von WordPress Core stammen. Ebenso stammen die restlichen 52 % von Plugins. Ich nehme an, Sie wissen bereits, was ein WordPress-Plugin ist
Bedrohungen und Angriffe
Wenn Sie ein WP-Theme oder Plugin-Entwickler sind, müssen Sie über gute Kenntnisse von Bedrohungen und Angriffen verfügen, um Ihren Code sicher zu machen und die WordPress-Schwachstelle zu reduzieren.

Es gibt viele Angriffe wie SQL-Injection-Angriffe, XSS-Angriffe, Umleitungsangriffe, CSRF-Angriffe, die durch Datenbereinigung, Datenvalidierung, Daten-Escape, Verwendung und Überprüfung von Nonce, sichere Umleitung, Benutzerfunktionen usw. verhindert werden können.
Als Entwickler ist Ihr Feind im Allgemeinen ein böswilliger Benutzer. Solche Benutzer schaden unserem Code. Wenn wir Benutzereingaben niemals vertrauen in unser tägliches Codierungsverhalten integrieren, sind wir bereits auf halbem Weg, sichereren Code zu schreiben, um Sicherheitsprobleme in WordPress zu reduzieren. Das erleichtert Ihnen die Arbeit als WordPress Customizer.
WordPress-Schwachstelle – SQL-Injection-Angriff
Bei dem Versuch, kritische und sensible Daten abzurufen, fügt der SQL-Injection-Angriff einen bösartigen SQL-Code in die WP-Datenbank ein. Sie zielen auf WordPress-Sites ab, die eine SQL-Datenbank verwenden – MySQL, Oracle, SQL Server usw.
Mit dieser Absicht haben sie Zugriff auf das Passwort, die E-Mail-Adresse oder alle sensiblen Daten, da sie die Daten einfach hinzufügen, bearbeiten oder lesen können.
Nehmen wir als Beispiel den berühmten Comic „Bobby Tables“.

In diesem Comic behält eine Dame den Namen seines Sohnes „Robert“); DROP TABLE Studenten; –') '; mit SQL-Befehl, der bei Eingabe in die Datenbank die gesamte Schülertabelle der Schule löscht, wenn der Name nicht bereinigt wurde.
Um die SQL-Injection zu vermeiden, müssen wir also die Benutzereingabedaten bereinigen.
Lassen Sie uns die Datenbereinigung im Detail besprechen.
Datenbereinigung
Sanitizing bedeutet, Eingaben zu sichern, Benutzereingaben zu bereinigen. Dieser Prozess entfernt ungültigen Text, UTF-8-Zeichen oder Code aus der Eingabe, um die Anfälligkeit in WordPress zu verringern.
Es wandelt HTML-spezifische Zeichen in Einheiten um und entfernt alle Tags. Es entfernt auch Zeilenumbrüche, Tabulatoren und einen zusätzlichen Leerraum, Strip-Oktette, die ein Grund für große Sicherheitsprobleme in WordPress sind.
Es gibt viele in WordPress integrierte Funktionen zum Bereinigen der Daten. Einige von ihnen sind in der folgenden Liste aufgeführt:
- sanitize_email(): Entfernt alle Zeichen, die nicht in der E-Mail enthalten sein sollten
- sanitize_text_field(): bereinigt einen String (aus der Benutzereingabe/Datenbank)
- sanitize_file_name(): Entfernt Zeichen (aus einem Dateinamen)
- sanitize_key(): Entfernt Schlüssel mit Ausnahme von alphanumerischen Kleinbuchstaben, Bindestrichen und Unterstrichen.
Beispiel für die Datenbereinigung:
$title=sanitize_text_field($_POST['title']); update_post_meta($post->ID,'title',$title);
Hier bereinigen wir zunächst den Titel. Nach der Bereinigung aktualisieren wir den Titelwert in der wp-Datenbank.
$Name= ' Robert'); DROP TABLE Students; --') '; INSERT INTO Students VALUES ('$Name'); INSERT INTO Students VALUES ('Robert'); DROP TABLE Students; --')
Hier im obigen SQL-Befehl hat der Name eine Zeichenfolge und Sonderzeichen und Entitäten, die in die Schülertabelle eingefügt wurden, der Name 'Robert'); Dadurch wird der Insert-SQL-Befehl geschlossen und ein weiterer Befehl mit dem halben Namen DROP TABLE Students ausgeführt; –') '; und diese Drop-Table-Studenten löschen alle Schülerdatensätze der Datenbank.
Wenn also hier eine Bereinigung durchgeführt wurde, bevor der Wert in die Datenbank eingegeben wurde, hätten Sie nicht die gesamte Schülerdatenbanktabelle verloren.
Sehen wir uns unten ein Beispiel für die Bereinigung an.
$Name=sanitize_text_field("' Robert'); DROP TABLE Students; --') ';"); $sql = $wpdb->prepare("INSERT INTO Students VALUES ($Name)"); /* this will only insert 'Robert DROP TABLE Students' */ $wpdb->query($sql);
Hier im obigen Beispiel hat die Bereinigung die zusätzlichen Entitäten und Zeichen aus dem Namen entfernt und erlaubt nur das Einfügen der Zeichenfolge in eine Datenbank. Auf diese Weise können wir die Daten sicher einfügen und sind sicher vor SQL-Injections.
Folgen Sie diesem Link, um mehr über das Sichern von Eingaben zu erfahren.
WordPress-Schwachstelle – XSS-Angriff
Cross-Site Scripting (XSS)-Angriffe fügen anfälligen JavaScript-Code der Skriptsprache ein, um ähnliche Daten anderer Benutzer wie Cookies, Sitzungstoken und andere Informationen zu stehlen. Wenn wir Cookie-Informationen haben, können wir automatisch eine Verbindung herstellen. Sicherheitsprobleme in WordPress kommen mit gestohlenen Cookies, da wir uns leicht mit anderen Identitäten anmelden können.
Es läuft auf einem Browser. Millionen von Menschen, die auf der Website surfen, werden von diesem Angriff betroffen sein. Zweifellos ist dieser Angriff einer der schwerwiegendsten Angriffe.
XSS-Angriffsbeispiel:
<script
<script
type=”text/javascript”>
var hacker
='../hacker.php?
cookie_data='
+escape(document.cookie);
</script>
</script>
Hier in diesem XSS-Angriffsbeispiel entkommen Cookies und werden an die Variable „cookie_data“ des hacker.php-Skripts gesendet.

Wenn der Angreifer dieses Skript in den Code der Website einfügt, wird es im Browser des Benutzers ausgeführt und Cookies werden an den Angreifer gesendet, was ein gefährliches Problem darstellt. Um dies zu vermeiden, müssen wir validieren. Validieren und bereinigen Sie alle Benutzereingabedaten und Escape-Ausgabedaten.
Lassen Sie uns im Folgenden im Detail diskutieren.
Datenvalidierung
Beim Validieren wird die Benutzereingabe überprüft. Dies geschieht, um zu prüfen, ob der Benutzer einen gültigen Wert eingibt oder nicht.
Es gibt drei Möglichkeiten, die Daten zu validieren, bei denen es sich um integrierte PHP-Funktionen, WordPress-Kernfunktionen und benutzerdefinierte Funktionen handelt. Vermeiden Sie dies niemals, um WordPress-Schwachstellen zu vermeiden. Einige von ihnen sind in der folgenden Liste aufgeführt:
- isset()/empty(): Prüfe, ob die Variable existiert oder nicht
- is_email(): prüft, ob angegebene Daten im E-Mail-Format vorliegen oder nicht
- is_serialized(): prüft, ob der Wert ein String ist oder nicht
Beispiel für Datenvalidierung:
$number='12323'; if(intval(number)){ //do your things } else{ esc_html_e('Enter valid number','text-domain'); }
Das obige Beispiel prüft, ob die Eingabedaten eine Zahl sind oder nicht, es wird das Programm nur ausführen, wenn es eine Zahl ist. Daher hilft die Datenvalidierung bei der Reduzierung von WordPress-Sicherheitsproblemen.
Folgen Sie diesem Link, um mehr über die Datenvalidierung zu erfahren
Datenflucht
Flucht ist Outputsicherung. Dabei werden unerwünschte Daten wie fehlerhafte HTML- oder Skript-Tags entfernt. Das Escape-Zeichen konvertiert nicht nur die speziellen HTML-Zeichen in HTML-Einheiten, sondern zeigt sie auch an, anstatt sie auszuführen. Dies geschieht, um XSS-Angriffe zu verhindern und sicherzustellen, dass die Daten so angezeigt werden, wie der Benutzer es erwartet.
WordPress bietet einige Hilfsfunktionen. Sie werden für die meisten Fälle verwendet. Einige von ihnen sind:
- esc_html(): Maskiert HTML-spezifische Zeichen
- esc_attr(): Maskiert den Wert von HTML-Tags-Attributen
- esc_url(): Maskiert Hypertext-REFerence-Attribute
Beispiel für Datenflucht:
$url
=
"javascript
:
alert
('Hello')";
<a
href=
"<?php
echo
esc_url
($url)
;?>">
Text
</a>
href=
"<?php
echo
esc_url
($url)
;?>">
Text
</a>
Im obigen Beispiel hat der Hacker den Code der Skriptsprache eingegeben, um die Sicherheitsprobleme der WordPress-Site anzufechten. Um dies zu vermeiden, haben wir esc_url verwendet, um den URL-Wert zu maskieren, und danach geben wir nur den Wert in unserem Code wieder. Auf diese Weise haben wir den XSS-Angriff verhindert.
WordPress-Schwachstelle – CSRF-Angriff
Weiter in WordPress Vulnerability besprechend, sind Cross-Site Request Forgery-Angriffe One-Click-Bedrohungen und -Angriffe oder Session-Riding-Angriffe.
Mit einem CSRF-Angriff kann ein Angreifer einen angemeldeten Benutzer dazu zwingen, ohne seine Zustimmung oder sein Wissen eine wichtige Aktion auszuführen.
Hier sendet ein autorisierter Benutzer nicht autorisierte Befehle.
Es basiert auf der Idee, dass ein autorisierter Benutzer, der an eine bestimmte Seite oder URL gesendet wird, möglicherweise Dinge tun kann, von denen er nicht weiß, dass er sie getan hat. Darüber hinaus kann es mit der Verwendung von Nonce behoben und Nonce überprüft werden.
Verwendung von Nonce
WP generiert ein Sicherheitstoken namens Nonce. Es ist eine sich nicht wiederholende eindeutige Nummer nur für Sie, die von Ihnen für eine bestimmte Operation verwendet werden kann. Der Nonce-Wert ist 24 Stunden lang gültig, danach verfällt er und der neue wird von wp generiert. Sie können auch die Validierungszeit für Nonce festlegen.
Es schützt URLs und Formulare vor Missbrauch, um die bestehenden Sicherheitsprobleme in WordPress zu reduzieren.
Um das Formular mit einem Nonce zu sichern, erstellen Sie außerdem ein Nonce-Feld, das mit der Funktion wp_nonce_field() ausgeblendet wird:
<form method="post"> <!-- some inputs here ... --> <?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?> </form>
Unten sind einige Funktionen für Nonce:
- wp_nonce_url() – Um einer URL eine Nonce hinzuzufügen.
- wp_create_nonce() – Um eine Nonce auf benutzerdefinierte Weise zu verwenden, um AJAX-Anforderungen zu verarbeiten.
Überprüfung einer Nonce
- check_ajax_referer() – Überprüft die Nonce (aber nicht den Referrer), und wenn die Prüfung fehlschlägt, wird die Skriptausführung standardmäßig beendet.
- wp_verify_nonce() – Um eine Nonce zu verifizieren.
if(isset($_POST['name_of_nonce_field']) && wp_verify_nonce($_POST['name_of_nonce_field'],'name_of_my_action')){ //do something } else{ esc_html_e('Sorry,your nonce did not verify.','text-domain'); }
Folgen Sie diesem Link, um mehr über Nonce zu erfahren
WordPress-Schwachstelle – Umleitungsangriff
Die WordPress-Schwachstelle führt auch dazu, dass Website-Besucher automatisch auf eine bösartige Website umgeleitet werden.
Dies tritt im Allgemeinen auf, wenn ein Besucher zu einer anderen Seite anstatt zu der angeforderten Seite oder Website umgeleitet wird.
Wenn Ihre Website viel Verkehr hat, kann dieser Angriff zu weniger Verkehr auf Ihrer Website führen. Sie werden nicht einmal bemerken, dass Ihr Website-Besucher auf eine andere Seite umgeleitet wird. Es kann jedoch mit Hilfe von Safe Redirect behoben werden.
Sichere Weiterleitung
Wenn Sie nach einer Aktion oder einem Formular einen Benutzer auf eine beliebige Seite umleiten, verwenden Sie wp_safe_redirect. wp_safe_redirect sucht nach einem zulässigen Host. Wenn der Host nicht zugelassen ist, wird er zur Site-URL umgeleitet. So wird eine böswillige Weiterleitung auf einen anderen Host verhindert. Aber das wird von wp_redirect nicht geprüft. Um WordPress-Sicherheitsprobleme zu reduzieren, ist die Verwendung von wp_safe_redirect ein sicherer Weg, um die Links umzuleiten.
$redirect=admin_url('edit.php'); wp_safe_redirect($redirect);
Sicherheitslücke in den Benutzerfunktionen
Neben Umleitungsangriffen, XSS-Angriffen, CSRF-Angriffen und SQL-Injection-Angriffen ist WordPress auch durch Benutzerfunktionen angreifbar. Wenn Sie jedem Benutzer erlauben, auf Ihre Website zu kommen, um Daten zu übermitteln, überprüfen Sie die Benutzerfähigkeiten. Andernfalls werden Sie Opfer von Drohungen und Angriffen.
Je höher die Benutzerrolle, desto mehr Fähigkeiten hat der Benutzer.
Manchmal vergessen Entwickler einfach sicherzustellen, dass der Benutzer, der sich auf einer Seite befindet, die ein Formular absendet, die erforderlichen Berechtigungen hat, um die Aktion auszuführen oder nicht. Es wird eine gemeinsame Quelle für WordPress-Schwachstellen bringen.
if ( current_user_can( 'edit_posts' ) ) { edit_post_link( esc_html__( 'Edit', 'wporg' ), '', ''); }
Nehmen wir ein Beispiel für eine Schwachstelle in Contact Form 7 (Art der WordPress-Schwachstelle).
Die Aktivierungszahl dieses Plugins beträgt über 5 Millionen Benutzer. Wenn es einen einzigen verwundbaren Code gibt, sind mehr als 5 Millionen Menschen davon betroffen.

In Version 5.0.3 und älteren Versionen gab es eine Funktionslücke. Ein angemeldeter Benutzer in der Contributor-Rolle kann Kontaktformulare einfach bearbeiten. Standardmäßig war es nur für Benutzer mit Administrator- und Editor-Rolle zugänglich.
Es bestand also eine größere Chance, ein Hacker zu sein. Die neue Version des Plugins hat diese Fehler behoben.
In WordPress immer zurückkehren oder beenden
Wenn Sie Return verpasst haben oder nach Abschluss Ihres Codes sterben, während Sie eine Funktion oder einen Ajax-Aufruf schreiben. Es mag einfach aussehen, kann aber zu wichtigen Sicherheitsproblemen führen.
Stellen Sie sicher, dass Sie immer Rückkehr hinzugefügt haben und sterben Sie an der Stelle, an der Sie es beabsichtigt haben. Sie können ein Beispiel für den Fehler #gotofail von Apple nehmen.
defined( 'ABSPATH' )
defined( 'ABSPATH' )
or die
( "No script kiddies please!" );
function
function
adls_view()
{ global $wpdb;
{ global $wpdb;
include( 'inc/frontend/smls-detail/smls-grid-inline.php' );
exit(); }
function
function
adls_generate_random_string
( $length ){
$string =
'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$random_string
=
'';
for
( $i = 1; $i <= $length; $i ++ )
{
{
$random_string .=
$string[ rand( 0, 61 ) ];
}
$return
$random_string;
}
}
Einpacken
Dies war ein wichtiger Beitrag für WordPress-Profis, die sich um Sicherheit kümmern. In diesem Beitrag haben Sie von den verschiedenen Bedrohungen und Angriffen erfahren, die WordPress anfällig machen. Es enthält eine kurze Einführung zu SQL-Injection-Angriffen, XSS-Angriffen, CSRF-Angriffen, Umleitungsangriffen und vielem mehr.

Die verschiedenen Techniken wie Datenbereinigung, Datenvalidierung, Datenescaping, Verwendung und Überprüfung von Nonce, sichere Umleitung und Benutzerfunktionen wurden ebenfalls besprochen. Aus diesem Grund gibt es Sicherheitsprobleme in WordPress.
Abschließend ,
- Vertrauen Sie niemals Benutzereingaben, um WordPress-Schwachstellen zu vermeiden.
- Alle Eingaben validieren, bereinigen und alle Ausgabedaten mit Escapezeichen versehen
- Vertrauen wir WordPress!
Wenn Sie mit den oben genannten Bedrohungen und Angriffen auf Probleme gestoßen sind, teilen Sie uns dies bitte mit. Unsere Experten werden Ihnen basierend auf Ihrem Problem eine passende Lösung anbieten.