Fehler in WordPress 3.5, der SQL Injection erlaubt

Nach dem Update auf WordPress 3.5 treten die ersten Sicherheitslücken auf. Insbesondere die Funktion $wpdb->prepare() ist diejenige, die das Problem darstellt.

Und ich habe Fehler in Anführungszeichen gesetzt, weil dies in Wirklichkeit eine Sicherheitsverbesserung darstellt und Plugins oder schlecht geschriebene Codes von Entwicklern nur negativ beeinflusst. Daher hat dieser neue Fehler einen negativen Anteil (Plugins, die diese Funktion falsch verwenden) sie können angegriffen werden) und ein positiver Teil (zwingt Entwickler, ihre Plugins so zu aktualisieren, dass der Fehler nicht angezeigt wird und sie korrekt und sicher geschrieben sind).

WordPress-Entwickler haben in dieser Funktion $wpdb->prepare() den Fehlerbericht implementiert und damit die Möglichkeit geschaffen, eine SQL-Injection in unser WordPress auszuführen und Daten wie Benutzer, E-Mails, verschlüsselte Passwörter abzurufen oder sogar auf unser zuzugreifen Server, wenn der MySQL-Server nicht ordnungsgemäß gesichert ist.

Das Problem ist, dass diese Funktion den folgenden Fehler anzeigt:

“PHP-Warnung: Argument 2 für wpdb :: prepare () fehlt.”

Mit diesem Fehler können Sie Blind-SQL-Injektionen durchführen und unser Blog gefährden.

Wie löse ich das Problem der SQL-Injection in WordPress 3.5?

Wenn Sie diesen Fehler in Ihrem Blog sehen, zögern Sie nicht, das Plug-in oder den Code zu deaktivieren, der ihn generiert, um Ihr Blog vor Angriffen zu schützen, während Sie das Problem nicht lösen.

Ein Beispiel für schlecht geschriebenen Code ist:
$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->comments SET comment_parent=$par_ID WHERE comment_ID=$com_ID;" ) );

Der obige Code enthält die Variablen $par_ID und $com_ID direkt in der SQL-Abfrage. $com_ID ist sehr gefährlich, da ein Benutzer diese Variablen entsprechend seinen Anforderungen für einen Angriff ändern kann.

Der richtig geschriebene Code wäre:
$wpdb->query( $wpdb->prepare( "UPDATE $wpdb->comments SET comment_parent=%d WHERE comment_ID=%d;", $par_ID, $com_ID ) );

Wie im Code zu sehen ist, sind in unserem Fall beide Variablen ganzzahlige Werte und werden durch% d ersetzt. Die Variablen werden am Ende der Funktion durch Kommas getrennt. Dies wäre der richtige Weg, die Funktion $wpdb->prepare() . Wenn unsere Variablen Textzeichenfolgen wären, anstatt% d zu verwenden, würden wir% s verwenden.

See also  Neue Hooks aus dem WordPress 3.5-Post-Editor

Ich hoffe, Sie waren hilfreich und erinnern sich, wenn Sie den Fehler ” PHP Warning: Fehlendes Argument 2 für wpdb :: prepare ()” sehen. ”Deaktivieren Sie die Plugins sofort nacheinander, um zu sehen, welches den Fehler verursacht. Wenn nach dem Deaktivieren aller Plugins der Fehler weiterhin auftritt, liegt das Problem in Ihrem Thema und Sie müssen es so schnell wie möglich beheben.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *