Extension:SpamBlacklist

From mediawiki.org
This page is a translated version of the page Extension:SpamBlacklist and the translation is 100% complete.
Bu uzantı MediaWiki 1.21 ve üstü ile gelir. Böylece tekrar indirmek zorunda değilsiniz. Ancak, verilen diğer talimatları izlemeniz gerekir.
MediaWiki manüel uzantıları
OOjs UI icon advanced-invert.svg
SpamBlacklist
Sürüm durumu: kararlı
SpamBlacklist.gif
Uygulama Sayfa işlemi
Açıklama Düzenli ifade tabanlı bir spam filtresi sağlar
Yazar(lar) Tim Starlingmesaj
En son sürüm Güncellemeler devam etmekte
Uyumluluk politikası MediaWiki ile birlikte anlık görüntüler yayımlanır. Master geriye dönük olarak uyumlu değil.
MediaWiki 1.31+
Lisans GNU Genel Kamu Lisansı 2.0 veya üstü
İndir
README
  • $wgBlacklistSettings
  • $wgLogSpamBlacklistHits
  • spamblacklistlog
  • sboverride
Translatewiki.net adresinde mevcutsa, SpamBlacklist uzantısını çevirin
Sorunlar Açık görevler · Hata bildir
Bu uzantıyı yeniden adlandırmak için bir teklif görev T254649 altında tartışılıyor.

SpamBlacklist uzantısı, alanları belirtilen dosyalarda veya viki sayfalarında tanımlanan normal ifade kalıplarıyla eşleşen URL'leri içeren düzenlemeleri ve belirtilen e-posta adreslerini kullanan kullanıcılar tarafından kaydedilmesini önler.

Birisi bir sayfayı kaydetmeye çalıştığında, bu uzantı metni (potansiyel olarak çok büyük) yasadışı ana bilgisayar adları listesiyle karşılaştırır. Bir eşleşme varsa, uzantı kullanıcıya bir hata mesajı görüntüler ve sayfayı kaydetmeyi reddeder.

Kurulum ve yükleme

Kurulum

Engelleme listesini ayarlama

Listelenen ek kaynaklar ne olursa olsun, aşağıdaki yerel sayfalar her zaman kullanılır:

Yasak URL'lerin engelleme listesi için varsayılan ek kaynak Meta Viki'de m:Spam engelleme listesi sayfasındaki Wikimedia spam engelleme listesidir. Varsayılan olarak, uzantı bu listeyi kullanır ve her 10-15 dakikada bir yeniden yükler. Birçok viki için, bu listeyi kullanmak çoğu spam girişimini engellemek için yeterli olacaktır. Ancak, Wikimedia engel listesi, yüz binlerce dış bağlantıya sahip çeşitli büyük vikiler grubu tarafından kullanıldığından, engellediği bağlantılarda nispeten muhafazakar.

Wikimedia spam engelleme listesi yalnızca hizmetliler tarafından düzenlenebilir; ancak m:Talk:Spam blacklist sayfasında engelleme listesinde değişiklik önerebilirsiniz.

Kendi vikinize başka kötü URL'ler ekleyebilirsiniz. Bunları LocalSettings.php içindeki $wgBlacklistSettings küresel değişkeninde listeleyin. Aşağıdaki örneklere bakın.

$wgBlacklistSettings iki seviyeli bir dizidir. Üst düzey anahtar spam veya email. Bir URL, bir dosya adı veya bir veritabanı konumu içeren her değere sahip bir dizi alırlar.

"LocalSettings.php" içinde $wgBlacklistSettings kullanırsanız, "[[m:Spam blacklist]]" varsayılan değeri artık kullanılmayacaktır. Bu engelleme listesine erişilmesini istiyorsanız, onu elle eklemeniz gerekecektir, aşağıdaki örneklere bakın.

Bir veritabanı konumu belirtmek, vikinizdeki bir sayfadan engelleme listesi çizmenize olanak tanır.

Veritabanı konum belirtecinin formatı ">DB: [db name] [title]". [db name], LocalSettings.php içindeki $wgDBname değeriyle tam olarak eşleşmelidir. Vikinizin varsayılan ad alanında gerekli sayfa adını [title] oluşturmalısınız. Bunu yaparsanız, sayfayı genel düzenlemeden korumanız şiddetle önerilir. Birinin her şeyle eşleşen bir normal ifade ekleyebilmesi gibi bariz bir tehlikenin yanı sıra, rastgele normal ifadeler girme yeteneğine sahip bir saldırganın PCRE kitaplığı içinde segmentasyon hataları oluşturabileceğini lütfen unutmayın.

Örnekler

Örneğin, standart Meta-Wiki listesine ek olarak İngilizce Vikipedi'nin spam engelleme listesini kullanmak istiyorsanız, wfLoadExtension( 'SpamBlacklist' ); çağrısından SONRA LocalSettings.php dosyasında aşağıdakileri arayabilirsiniz:

$wgBlacklistSettings = [
	'spam' => [
		'files' => [
			"https://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1",
			"https://en.wikipedia.org/w/index.php?title=MediaWiki:Spam-blacklist&action=raw&sb_ver=1"
		],
	],
];

İşte tamamen yerel bir engelleme listesi kümesi örneği: hizmetli, Meta-Viki kara listesinin bir kopyasını tutan ve vikide "Spam engelleme listem" sayfası ek bir engelleme listesine sahip olan "wikimedia_blacklist" adlı yerel bir dosya oluşturmak için update script kullanıyor:

$wgBlacklistSettings = [
	'spam' => [
		'files' => [
			"$IP/extensions/SpamBlacklist/wikimedia_blacklist", // Wikimedia'nın listesi
			   //  database      title
			'DB: wikidb My_spam_block_list',    
		],
	],
];

Günlük kayıtı

Varsayılan olarak, uzantı, spam kara liste günlüğüne kaydetmez. Günlük kaydını etkinleştirmek için $wgLogSpamBlacklistHits = true; ayarlayın. Günlüklere erişimi kontrol etmek için spamblacklist kullanıcı hakkını kullanabilirsiniz. Oturum açmış her kullanıcı, günlükleri varsayılan olarak görüntüleyebilir.

Sorunlar

Geri İzleme Sınırı

Engellenenler listesiyle ilgili sorunlarla karşılaşırsanız, geri izleme sınırını artırmak isteyebilirsiniz. Ancak diğer yandan, geri izleme sınırı bir performans sınırı olduğundan, bu DOS saldırılarına karşı güvenliğinizi azaltabilir:

// Perl Uyumlu Normal İfadeler, bellek sınırını geriye doğru takip eder
// (PHP 5.3.x varsayılanı, 1000K, SpamBlacklist için çok düşük)
ini_set( 'pcre.backtrack_limit', '8M' );

Sertleştirilmiş Vikiler

SpamBlacklist, viki sağlamlaştırılmışsa düzenlemeye izin vermez. Sertleştirme, curl ile yolda olmaması için open_basedir sınırlamasını ve php.ini olarak allow_url_fopen=Off ayarlamayı içerir.

Sertleştirilmiş durumda, Guzzle bir ağ isteğinde bulunmaya çalıştığında SpamBlacklist bir istisnaya neden olur. Guzzle istisna mesajı, GuzzleHttp için cURL, allow_url_fopen ini ayarı veya özel bir HTTP işleyicisi gerekir şeklindedir.

Kullanıcı Filtreleme

SpamBlacklist, hizmetliler ve botlar dahil tüm kullanıcıları varsayılan olarak filtreleyecektir. Ayrıca Phabricator görev T36928 sayfasına bakın.

Güvenli listesi

İlgili bir güvenli liste MediaWiki:Spam-whitelist sayfası düzenlenerek saklanabilir. Kullandığınız başka bir vikinin engelleme listesindeki belirli girişleri geçersiz kılmak istiyorsanız bu yararlıdır. Wikimedia vikileri, örneğin, bazen spam engelleme listesini spam ile mücadele dışındaki amaçlarla kullanılır.

Wikimedia spam engelleme listelerinin istenmeyen postaları üçüncü taraf vikilerinden uzak tutmada ne kadar etkili olduğu şüphelidir. Bazı spamlar yalnızca Wikimedia vikilerini veya yalnızca üçüncü taraf vikilerini hedef alabilir, bu da Wikimedia'nın kara listesinin söz konusu üçüncü taraf vikilerine çok az yardım etmesine neden olur. Ayrıca, bazı üçüncü taraf wiki'ler, kullanıcıların Vikipedi'de güvenilir olarak kabul edilmeyen kaynaklar alıntı yapmasına izin verilmesini veya Vikipedi'nin engellemeyi garanti edecek kadar ideolojik olarak saldırgan bulduğunu tercih edebilir. Bazen bir vikinin gereksiz spam olarak değerlendirdiği bir şey, başka bir vikinin yararlı olduğunu düşünebilir.

Kullanıcılar, bir bağlantının spam olarak reddedilmesinin, düzenledikleri münferit vikinin o URL'yi yasaklamayı özellikle seçtiği anlamına gelmediğini her zaman fark etmeyebilir. Bu nedenle, viki sistem hizmetlileri, kullanıcıları Manual:Hizmetliler tarafından güvenli listeye eklenmesi gereken sayfalar için MediaWiki talk:Spam-whitelist sayfasında önerilerde bulunmaya davet etmek için vikinizde Manual:System messages ile MediaWiki:Spamprotectiontext ve/veya MediaWiki:Spamprotectionmatch olarak düzenlemek isteyebilirler. Örneğin, MediaWiki:Spamprotectiontext için koyabilirsiniz:

Kaydetmek istediğiniz metin spam filtresi tarafından engellendi. Bu muhtemelen kara listeye alınmış bir harici siteye bağlantıdan kaynaklanmaktadır. {{SITENAME}} [[MediaWiki:Spam-blacklist|kendi engelleme listesini]] tutar; ancak, çoğu engelleme [[metawikimedia:Spam-blacklist|Meta-Viki'nin engelleme listesi]] aracılığıyla yapılır, bu nedenle bu engelleme mutlaka {{SITENAME}} sitesinin bu belirli metin (veya URL) engelleme kararı verdiğinin bir göstergesi olarak yorumlanmamalıdır. Bu metnin (veya URL'nin) [[MediaWiki:Spam-whitelist|yerel spam güvenli listesine]] eklenmesini istiyorsanız, böylece {{SITENAME}} kullanıcılarının onu sayfalara eklemesi engellenmez, lütfen [[MediaWiki talk:Spam-whitelist]] sayfasından bir istekte bulunun. Bir [[Project:Hizmetliler|hizmetli]], güvenli olarak listelenip listelenmeyeceğine dair bir kararla o sayfada yanıt verir.

Notlar

  • Bu uzantı yalnızca viki editörleri tarafından eklenen yeni harici bağlantıları inceler. Kullanıcı aracılarını kontrol etmek için Bad Behaviour veya Akismet ekleyin. MediaWiki'deki spam ile mücadele için çeşitli araçlar kötüye kullanımı tespit etmek için farklı yöntemler kullandığından, güvenlik önlemleri birlikte en iyi şekilde kullanılır.
  • Extension:SpamBlacklist/update script, paylaşılan engel listelerinden güncellemeleri otomatikleştirebilen bir cron betiğidir. Memcached kullanıyorsanız, spam_blacklist_regexes anahtarını da silmeniz gerekir (örneğin, maintenance/mcc.php kullanarak).
  • Bazı kullanıcıların spam engelleme listesini geçersiz kılmasına izin vermenin bir yolu yoktur. bugzilla:34928 sayfasına bakın.

Kullanım

Engelleme listesi sözdizimi

Kendinize ait bir engel listesi oluşturmak veya mevcut bir listeyi değiştirmek istiyorsanız, sözdizimi şöyledir:

'#' karakterinden sonra satırdaki her şey yok sayılır (yorumlar için). Diğer tüm dizeler, yalnızca URL'lerle eşleşen düzenli ifade parçalarıdır.

Notlar
  • "http://" eklemeyin; Normal ifade URL'lerin içindeki "http://" (veya "https://") sonrasında ile eşleşeceğinden bu başarısız olur.
    • Düzenli ifade herhangi bir alt alan adıyla eşleşeceğinden, "www" gerekmez. "www\." vererek, açık bir şekilde belirli alt alanlarla eşleşebilir.
  • (?<=//|\.) ve $ çengelleri, URL'nin başlangıcı ve bitişiyle değil, alan adının başlangıcı ve bitişiyle eşleşir. Normal çengel ^ herhangi bir işe yaramaz.
  • Eğik çizgiler ters eğik çizgilerden kaçmak zorunda değildir, bu betik tarafından otomatik olarak yapılacaktır.
Örnek

Aşağıdaki satır, hemen önünde veya ardından bir harf veya rakam gelmesi dışında, "example.com" dizesini içeren tüm URL'leri engeller.

\bexample\.com\b

Bunlardan engellendi:

  • http://www.example.com
  • http://www.this-example.com
  • http://www.google.de/search?q=example.com

Bunlar engellenmemiştir:

  • http://www.goodexample.com
  • http://www.google.de/search?q=example.commodity

Performans

Uzantı /https?:\/\/[a-z0-9\-.]*(line 1|line 2|line 3|....)/Si gibi görünen tek bir düzenli ifadesi oluşturur (hatlardaki tüm eğik çizgiler otomatik olarak kaçar). Tüm kodları her sayfa görünümünde yüklemekten kaçınmak için bunu küçük bir "loader" dosyasına kaydeder. Bayt kodu önbellek kullanmasanız bile sayfa görüntüleme performansı etkilenmeyecektir, ancak herhangi bir MediaWiki yüklemesi için önbellek kullanılması önemle tavsiye edilir.

Düzenli ifade eşleşmesinin kendisi genellikle sayfa tasarruflarına önemsiz bir ek yük ekler (deneyimimizde 100 ms civarında). Ancak, spam dosyasını diskten veya veritabanından yüklemek ve normal ifadeyi oluşturmak, donanımınıza bağlı olarak önemli miktarda zaman alabilir. Bu uzantıyı etkinleştirmenin yavaşladığını fark ederseniz, desteklenen bir bayt kodu önbelleği yüklemeyi deneyin. Böyle bir sistem varsa, bu uzantı yapılandırılmış normal ifadeyi önbelleğe alır.

Bir sunucuyu ve önbelleği birkaç viki ile paylaşıyorsanız, SpamBlacklist_body.php içindeki getSharedBlacklists ve clearCache öğelerini $wgDBname yerine $wgSharedUploadDBname ile (veya paylaşılan bir yükleme DB'niz yoksa belirli bir DB'yi) kullanacak şekilde değiştirerek önbellek performansınızı artırabilirsiniz. Tüm referansları aldığınızdan emin olun! Her vikideki ayrı MediaWiki:Spam-blacklist ve MediaWiki:Spam-whitelist sayfalarındaki normal ifadeler uygulanmaya devam edecektir.

Harici engel listesi sunucuları (RBL'ler)

Standart biçiminde, bu uzantı, engel listesinin elle oluşturulmasını gerektirir. Normal ifade joker karakterlerine izin verilirken ve bir vikiden kaynaklanan bir engelleme listesi başkaları tarafından yeniden kullanılabilirken, spam ile yanıt olarak yeni modeller eklemek veya yanlış pozitifler oluşturan kalıpları kaldırmak için hâlâ biraz çaba gerekiyor.

Bu çabanın çoğu, spam normal ifadesinin spam e-postada reklamı yapılan bilinen alan adlarının listeleriyle desteklenmesiyle azaltılabilir. Normal ifade yaygın kalıpları ("kumarhane-" veya "-viagra" gibi) yakalarken, harici engel listesi sunucusu spam yoluyla tanıtılan belirli sitelerin adlarıyla otomatik olarak güncellenir.

SpamBlacklist_body.php dosyasındaki filter() işlevinde, dosya başlangıcı ve bitişi arasında yaklaşık olarak yarı yolda şu satırlar bulunur:

       # Do the match
       wfDebugLog( 'SpamBlacklist', "Checking text against " . count( $blacklists ) .
           " regexes: " . implode( ', ', $blacklists ) . "\n" );

Bu bölümün hemen üstüne (çıkarılan bağlantılarda gerçek düzenli ifade testi yapar), harici RBL sunucularını kontrol etmek için ek kod eklenebilir:

        # Do RBL checks
        $retVal = false;
        $wgAreBelongToUs = ['l1.apews.org.', 'multi.surbl.org.', 'multi.uribl.com.'];
        foreach( $addedLinks as $link ) {
              $link_url=parse_url($link);
              $link_url=$link_url['host'];
              if ($link_url) {
                   foreach( $wgAreBelongToUs as $base ) {
                        $host = "$link_url.$base";
                        $ipList = gethostbynamel( $host );
                        if( $ipList ) {
                           wfDebug( "RBL match: Hostname $host is {$ipList[0]}, it's spam says $base!\n" );
                           $ip = wfGetIP();
                           wfDebugLog( 'SpamBlacklistHit', "$ip caught submitting spam: {$link_url} per RBL {$base}\n" );
                           $retVal = $link_url . ' (blacklisted by ' . $base .')';
                           wfProfileOut( $fname );
                           return $retVal;
                        }
                   }
              }
        }

        # if no match found on RBL server, continue normally with regex tests...

Bu, bir düzenleme zaten engellenmiş spam etki alanlarından URL'ler içeriyorsa, kullanıcıya, harici bir spam engelleme listesinde görünmesi nedeniyle hangi bağlantının kaydedilemeyeceğini belirten bir hata döndürülmesini sağlar. Hiçbir şey bulunamazsa, kalan normal ifade testlerinin normal şekilde çalışmasına izin verilir, böylece URL'de manuel olarak belirtilen herhangi bir 'şüpheli kalıp' tanımlanabilir ve engellenebilir.

RBL sunucularının tam URL yolunu değil, yalnızca temel alan adlarını listelediğini unutmayın, bu nedenle http://example.com/casino-viagra-lottery.html yalnızca "example.com" kendisi harici sunucu tarafından adıyla engellenmiş durumunda RBL'yi tetikleyecektir. Ancak normal ifade, "example"'dan "lottery" ile ve aradaki her şeye kadar, URL ve yoldaki herhangi bir metni engelleyebilir. Her iki yaklaşım da bazı yanlış pozitifler riski taşır. Joker karakter ifadelerinin kullanılması nedeniyle normal ifade ve bu sunucular genellikle başka amaçlar için oluşturulduğu için harici RBL, örneğin kötüye kullanım amaçlı spam e-postanın kontrolü gibi ve meşgul olmayan alanları içerebilir forumda, vikide, blogda veya ziyaretçi defterinde yorum spamı kendi başına.

Diğer spam ile mücadele araçları

Mediawiki.org'da spam ve diğer vandalizmlerle mücadele konusunda çeşitli yararlı kılavuzlar vardır:

Diğer anti-spam, anti-vandalizm uzantıları şunları içerir:

Ayrıca bakınız