Avatar

SPAM Einträge ohne tid bzw. id != tid (Bugs)

by Micha ⌂, Thursday, July 02, 2020, 21:14 (118 days ago)

Hallo zusammen,

ich habe in meinem Forum bemerkt, dass ich eine Menge SPAM postings habe, bei denen die tid = 0 ist.

[image]

Wenn ich jetzt die Funktion delete_posting_recursive() verwende, löscht die diese SPAM-Nachrichten nicht, da

$ids_result = mysqli_query($connid, "SELECT id FROM " . $db_settings['forum_table'] . " WHERE tid = " . intval($id));

nicht funktioniert (da tid != id).

Den SQL leicht anzupassen, ist sicher möglich, d.h.,

$ids_result = mysqli_query($connid, "SELECT id FROM `" . $db_settings['forum_table'] . " WHERE tid = " . intval($id)) . " OR id = " . intval($id));

würde dieses Problem direkt lösen (sowie ein paar Zeilen weiter unten beim DELETE).

Die geänderten SQLs würde ich mal hochladen. Das OR ist ansonsten unkritisch.

Was mich aber eher wundert ist die Tatsache, dass diese Einträge überhaupt erstellt werden können (also die Ursache). Hier im Forum hatten wir schon ab und zu mal Anfragen, dass Threads nicht gelöscht werden können (und keinen Titel besitzen):

[image]

Wir haben den Leuten dann immer empfohlen via PHPMyAdmin das Löschen vorzunehmen. Möglicherweise gibt es hier einen Zusammenhang.

Eine von Euch das auch schon mal gehabt?

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Avatar

SPAM Einträge ohne tid bzw. id != tid

by Alfie ⌂ @, Vienna, Austria, Thursday, July 02, 2020, 21:41 (118 days ago) @ Micha

Hallo Micha

ich habe in meinem Forum bemerkt, dass ich eine Menge SPAM postings habe, bei denen die tid = 0 ist.

Specify „Menge”.

Was mich aber eher wundert ist die Tatsache, dass diese Einträge überhaupt erstellt werden können (also die Ursache).

Sehr seltsam.

Eine von Euch das auch schon mal gehabt?

Nein, aber ich bin auch nicht mit 2.x unterwegs und koche mein eigenes Abwehr-Süppchen. Registrierungs-/Anmeldeversuche hatte ich bis November letzten Jahres im Schnitt 13 / Tag (2–98). Seitdem läuft alles über Cloudflare-Mirrors; gesunken auf 11 / Tag (2–81). Nicht überraschend, da ein Gründer von Cloudflare vorher bei BotScout zugange war und schon einiges bei ersten request geblockt wird. Spam (entweder Post oder nur im Profil) etwa 4 / Jahr.

--
Cheers,
Alfie (Helmut Schütz)
BEBA-Forum (v1.8β)

Avatar

SPAM Einträge ohne tid bzw. id != tid

by Micha ⌂, Friday, July 03, 2020, 07:10 (117 days ago) @ Alfie

Hallo,

Specify „Menge”.

Ist das relevant? Da ich die Nachrichten alle 24 h auch automatisch lösche, weiß ich es nicht. Aber bei allen Nachrichten von gestern war die tid = 0 != id. Insofern: 100 % der Nachrichten.

Um auch nicht mißverstanden zu werden. Alle Nachrichten wurden automatisch als SPAM klassifiziert. Keine war jemals im Fontend zu sehen oder mussten manuell klassifiziert werden.

Seitdem läuft alles über Cloudflare-Mirrors; gesunken auf 11 / Tag (2–81). Nicht überraschend, da ein Gründer von Cloudflare vorher bei BotScout zugange war und schon einiges bei ersten request geblockt wird. Spam (entweder Post oder nur im Profil) etwa 4 / Jahr.

Okay. Ich nutze NUR noch B8 und bin praktisch SPAM frei und muss mich nicht auf andere Dienste verlassen. Hiermit bin ich extrem zufrieden. Pseudo-Anmeldungen habe ich keine aber man kann so oder so ohne Registrierung schreiben. Aber das soll hier nicht das Thema sein...

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Avatar

SPAM Einträge ohne tid bzw. id != tid

by Alfie ⌂ @, Vienna, Austria, Friday, July 03, 2020, 08:46 (117 days ago) @ Micha

Hallo Micha,

Specify „Menge”.

Ist das relevant?

Nö, hat mich nur interessiert.

Da ich die Nachrichten alle 24 h auch automatisch lösche, weiß ich es nicht. Aber bei allen Nachrichten von gestern war die tid = 0 != id. Insofern: 100 % der Nachrichten.

Kurios.

Ich nutze NUR noch B8 und bin praktisch SPAM frei und muss mich nicht auf andere Dienste verlassen. Hiermit bin ich extrem zufrieden.

B8 ist bei mir noch im Trainingsstadium. Wollte ich im Kontaktformular einsetzen, da 1–2× / Monat Spam abgesetzt wird. Auf der to-do list.
Meine Registrierungsblocks sind zu ~85% lokal.

Pseudo-Anmeldungen habe ich keine aber man kann so oder so ohne Registrierung schreiben.

Ah, wusste ich nicht. Warst du nicht früher rigoros? Nur nach Registrierung und längere Zeit inaktive User wurden gnadenlos gelöscht?

Aber das soll hier nicht das Thema sein...

Sorry for OT. Thread-shift halt.

--
Cheers,
Alfie (Helmut Schütz)
BEBA-Forum (v1.8β)

Avatar

SPAM Einträge ohne tid bzw. id != tid

by Micha ⌂, Friday, July 03, 2020, 08:55 (117 days ago) @ Alfie

Hallo,

Nö, hat mich nur interessiert.

Ich habe nachgesehen, es war sogar nur 1h eingestellt, dann wurden sie gelöscht (aber wohl nicht richtig, siehe anderes Posting)

B8 ist bei mir noch im Trainingsstadium. Wollte ich im Kontaktformular einsetzen, da 1–2× / Monat Spam abgesetzt wird. Auf der to-do list.

Ich habe es hier so implementiert, dass jeder Eintrag direkt auch als Trainingsdatensatz verwendet wird. Je mehr SPAM also kommt, desto unwahrscheinlicher wird es, dass der auch angezeigt wird. (Bin mal gespannt, ob das irgendwann kippt.) "Probleme" machen nur Einträge in Kyrillisch. Da habe ich zu wenige, dass die alle immer zuverlässig gefiltert werden.

Meine Registrierungsblocks sind zu ~85% lokal.

Aber sie kommen von einem Dienst.

Ah, wusste ich nicht. Warst du nicht früher rigoros? Nur nach Registrierung und längere Zeit inaktive User wurden gnadenlos gelöscht?

War das so??? Soweit ich mich erinnern kann, musst man sich noch nie registrieren (aber vielleicht irre ich).

Gelöscht wird aber weiterhin. Ich habe hierzu in mlf2 sogar eine Einstellung hinzugefügt. Wer x Jahre nicht im Forum war, erhält noch eine Email und wenn er dann nicht reagiert, wird die Karteileiche entfernt. Habe ich vom SELFHTML-Forum übernommen und fand die Idee gut.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Avatar

SPAM Einträge ohne tid bzw. id != tid

by Micha ⌂, Friday, July 03, 2020, 08:21 (117 days ago) @ Micha

Hallo,

ich habe ein wenig weiter gesucht nach der Ursache. Ich meine, das Problem liegt an den (geänderten) daily_actions:

Dort wird SPAM derzeit(automatisch) mit einem SQL entfernt:

@mysqli_query($connid, "DELETE FROM `". $db_settings['forum_table'] ."` WHERE `time` < (NOW() - INTERVAL ". intval($settings['auto_delete_spam']) ." HOUR) AND 
         `id` IN (SELECT `". $db_settings['akismet_rating_table'] ."`.`eid` 
         FROM `". $db_settings['akismet_rating_table'] ."` 
         JOIN `". $db_settings['b8_rating_table'] ."` ON `". $db_settings['akismet_rating_table'] ."`.`eid` = `". $db_settings['b8_rating_table'] ."`.`eid` 
         WHERE `". $db_settings['akismet_rating_table'] ."`.`spam` = 1 OR `". $db_settings['b8_rating_table'] ."`.`spam` = 1); ");

Das funktioniert auch zuverlässig. ABER: die ids des jeweiligen Postings stehen noch in anderen Tabellen drin, siehe die Liste an abhängigen Tabellen
in delete_posting_recursive.

Wenn aber nur die Postings entfernt werden, dann bleiben die ids in den anderen Tabellen enthalten. Ein neuer Eintrag führt dann u.U. zu einer Kollision, wodurch das Script abgebrochen ist, bevor die tid gesetzt wurde.

Ich habe zwei Lösungsvorschläge für die daily_actions:

Wir lösen es via SQL, indem wir die abhängigen Tabellen auch bereinigen:

   @mysqli_query($connid, "DELETE FROM `". $db_settings['forum_table'] ."` WHERE `time` < (NOW() - INTERVAL ". intval($settings['auto_delete_spam']) ." HOUR) AND 
         `id` IN (SELECT `". $db_settings['akismet_rating_table'] ."`.`eid` 
         FROM `". $db_settings['akismet_rating_table'] ."` 
         JOIN `". $db_settings['b8_rating_table'] ."` ON `". $db_settings['akismet_rating_table'] ."`.`eid` = `". $db_settings['b8_rating_table'] ."`.`eid` 
         WHERE `". $db_settings['akismet_rating_table'] ."`.`spam` = 1 OR `". $db_settings['b8_rating_table'] ."`.`spam` = 1); ");
 
   // DELETE dependent entries - see delete_posting_recursive
   @mysqli_query($connid, "DELETE FROM `". $db_settings['entry_cache_table'] ."`    WHERE `cache_id`   NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");         
   @mysqli_query($connid, "DELETE FROM `". $db_settings['bookmark_table'] ."`       WHERE `posting_id` NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");
   @mysqli_query($connid, "DELETE FROM `". $db_settings['read_status_table'] ."`    WHERE `posting_id` NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");
   @mysqli_query($connid, "DELETE FROM `". $db_settings['entry_tags_table'] ."`     WHERE `bid`        NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");
   @mysqli_query($connid, "DELETE FROM `". $db_settings['subscriptions_table'] ."`  WHERE `eid`        NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");
   @mysqli_query($connid, "DELETE FROM `". $db_settings['akismet_rating_table'] ."` WHERE `eid`        NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");
   @mysqli_query($connid, "DELETE FROM `". $db_settings['b8_rating_table'] ."`      WHERE `eid`        NOT IN (SELECT `id` FROM `". $db_settings['forum_table'] ."`); ");


Die Lösung hat das Problem, dass wir nun an zwei Stellen das Löschen beachten müssen. Daher die Alternative, bei der die delete_posting_recursive direkt aufgerufen wird.

$spam_ids_result = mysqli_query($connid, "SELECT `id` FROM `" . $db_settings['forum_table'] ."` WHERE `time` < (NOW() - INTERVAL ". intval($settings['auto_delete_spam']) ." HOUR) AND 
         `id` IN (SELECT `". $db_settings['akismet_rating_table'] ."`.`eid` 
         FROM `". $db_settings['akismet_rating_table'] ."` 
         JOIN `". $db_settings['b8_rating_table'] ."` ON `". $db_settings['akismet_rating_table'] ."`.`eid` = `". $db_settings['b8_rating_table'] ."`.`eid` 
         WHERE `". $db_settings['akismet_rating_table'] ."`.`spam` = 1 OR `". $db_settings['b8_rating_table'] ."`.`spam` = 1); ");
 
   while ($spam_ids_data = mysqli_fetch_array($spam_ids_result)) {
    delete_posting_recursive(intval($spam_ids_data['id']));
   }

Was denkt Ihr?

/Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Avatar

SPAM Einträge ohne tid bzw. id != tid

by Micha ⌂, Saturday, July 04, 2020, 14:23 (116 days ago) @ Micha

Hallo,

ich habe es eingepflegt.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

RSS Feed of thread

powered by my little forum