Ho aiutato un sito che ha ricevuto circa 30 post di spam all’ora. Abbiamo attivato l’AI Spam, ma ciò non ha risolto il problema dei post esistenti. Ecco cosa ho fatto. Potrebbe funzionare anche per te. Non è stato testato sul tuo sito, quindi se fai una di queste cose dovresti fare un backup e assicurarti che non sembri che questo sia stato scritto da un’IA che sta cercando di abbattere il tuo sito.
Questo presuppone che tu sappia cos’è Rails e come eseguirlo. Se non lo sai, probabilmente non dovresti farlo.
Innanzitutto, dovresti mettere il tuo sito in Modalità di sola lettura in Discourse in modo che le persone non creino contenuti mentre commetti un terribile errore. Quindi fai un backup. Ciò significa che finché non disattivi la modalità di sola lettura, puoi tornare in sicurezza al tuo backup.
Ottieni i post recenti
L’attacco è iniziato poco più di un giorno fa, quindi sono tornato indietro di due giorni. Potresti anche fare cose come 36.hours.ago se vuoi essere più esplicito. Se fossi più intelligente, avrei fatto qualcosa per saltare i post nei PM, ma ho deciso di non preoccuparmene.
posts = Post.where("created_at >= ?", 2.days.ago)
.where(deleted_at: nil)
.where("user_id > ?", 1)
Chiama SpamScanner su quei post
Non sono del tutto sicuro di cosa sia successo per far fallire alcuni di questi, ma se ottieni alcuni “oops” probabilmente non è motivo di preoccupazione
posts.each do |post|
begin
puts "https://talk.commonmark.org/p/#{post.id}"
DiscourseAi::AiModeration::SpamScanner.perform_scan(post)
rescue
puts "oops";
end;
sleep 0.2;
end
Ottieni i post che ora devono essere revisionati
Questo ottiene i post revisionabili che sono stati appena contrassegnati come revisionabili (presumibilmente dalle azioni di cui sopra). Non vogliamo applicarlo ciecamente a cose che non fanno parte di questa pericolosa avventura.
reviewables = Reviewable.where(status: "pending")
.where(potential_spam: true)
.where("created_at >= ?", 1.hour.ago)
.where("updated_at >= ?", 1.hour.ago)
Fidati ciecamente dell’IA
Naturalmente hai esaminato attentamente gli argomenti che sono stati nascosti e sembrano tutti essere spam, quindi andrai dritto per la tua strada. L’intestazione è uno scherzo. Non ti fidi ciecamente dell’IA, vero?!?!?
Questo eliminerà i post ed eliminerà e bloccherà gli utenti. È davvero, davvero pericoloso.
reviewables.each do |reviewable|
begin
puts "deleting https://talk.commonmark.org/t/#{reviewable.topic_id}"
if reviewable.topic.nil?
puts "already gone"
next
end
reviewable.perform(user, :delete_user_block)
rescue
puts "oops"
end
end