Extension:SpamBlacklist
![]() Sürüm durumu: kararlı |
|
---|---|
![]() |
|
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 |
|
|
|
|
Quarterly downloads | 67 (Ranked 81st) |
Public wikis using | 4,601 (Ranked 180th) |
Translatewiki.net adresinde mevcutsa, SpamBlacklist uzantısını çevirin | |
Sorunlar | Açık görevler · Hata bildir |
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
- Dosyaları indirin ve
extensions/
klasörünüzdekiSpamBlacklist
adlı dizine yerleştirin.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist - LocalSettings.php dosyanızın altına aşağıdaki kodu ekleyin:
wfLoadExtension( 'SpamBlacklist' );
- Engelleme listesini istediğiniz gibi yapılandırın
- Yapıldı – Uzantının başarıyla yüklendiğini doğrulamak için vikinizde Special:Version seçeneğine gidin.
Engelleme listesini ayarlama
Listelenen ek kaynaklar ne olursa olsun, aşağıdaki yerel sayfalar her zaman kullanılır:
- MediaWiki:Spam-blacklist
- MediaWiki:Spam-whitelist
- MediaWiki:Email-blacklist
- MediaWiki:Email-whitelist
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.
You should create the required page name [title] in the default namespace of your wiki. If you do this, it is strongly recommended that you protect the page from general editing. Besides the obvious danger that someone may add a regex that matches everything, please note that an attacker with the ability to input arbitrary regular expressions may be able to generate segfaults in the PCRE library.
- Ö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 "$file" adlı yerel bir dosya oluşturmak için $updatescript 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:
However on the other hand, this can reduce your security against DOS [1] attacks, as the backtrack limit is a performance limit:
// 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 $1 sınırlamasını ve $3 olarak $2 ayarlamayı içerir.
Hardening includes limiting open_basedir
so that curl
is not on-path, and setting allow_url_fopen=Off
in php.ini
.
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. The Guzzle exception message is, GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.
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. Some spam might be targeted only at Wikimedia wikis, or only at third-party wikis, which would make Wikimedia's blacklist of little help to said third-party wikis in those cases. Also, some third-party wikis might prefer that users be allowed to cite sources that Wikipedia does not allow. Sometimes what one wiki considers useless spam, another wiki might consider useful.
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ı $sysop tarafından güvenli listeye eklenmesi gereken sayfalar için $4 sayfasında önerilerde bulunmaya davet etmek için vikinizde $1 ile $2 ve/veya $3 olarak düzenlemek isteyebilirler. Örneğin, $5 için koyabilirsiniz: Therefore, wiki system administrators may want to edit the Manual:System messages at MediaWiki:Spamprotectiontext and/or MediaWiki:Spamprotectionmatch on your wiki to invite users to make suggestions at MediaWiki talk:Spam-whitelist for pages that should be added by a Manual:Hizmetliler to the safe list. For example, you could put, for MediaWiki:Spamprotectiontext:
- Kaydetmek istediğiniz metin spam filtresi tarafından engellendi. Bu muhtemelen kara listeye alınmış bir harici siteye bağlantıdan kaynaklanmaktadır. $sitename [[$own|kendi engelleme listesini]] tutar; ancak, çoğu engelleme [[$metawiki|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) [[$local|yerel spam güvenli listesine]] eklenmesini istiyorsanız, böylece $sitename kullanıcılarının onu sayfalara eklemesi engellenmez, lütfen $talk sayfasından bir istekte bulunun. Bir [[Project:Hizmetliler|hizmetli]], güvenli olarak listelenip listelenmeyeceğine dair bir kararla o sayfada yanıt verir. This is probably caused by a link to a blacklisted external site. {{SITENAME}} maintains [[MediaWiki:Spam-blacklist|its own blacklist]]; however, most blocking is done by means of [[metawikimedia:Spam-blacklist|Meta-Wiki's blacklist]], so this block should not necessarily be construed as an indication that {{SITENAME}} made a decision to block this particular text (or URL). If you would like this text (or URL) to be added to [[MediaWiki:Spam-whitelist|the local spam safe list]], so that {{SITENAME}} users will not be blocked from adding it to pages, please make a request at [[MediaWiki talk:Spam-whitelist]]. A [[Project:Sysops|sysop]] will then respond on that page with a decision as to whether it should be listed as safe.
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 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.
- Users with the
sboverride
can override the blacklist and add blocked links to pages. By default this right is only given to bots.
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.
- The spam blacklist functions prior to abuse filters, so blacklisted domains will not show in the entries in abuse filter log (special:abuselog), and will only show in (special:log/spamblacklist).
- Ö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 $shareddb 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. Be sure to get all references! The regexes from the separate MediaWiki:Spam-blacklist and MediaWiki:Spam-whitelist pages on each wiki will still be applied.
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. The regex will catch common patterns (like "casino-" or "-viagra") while the external blacklist server will automatically update with names of specific sites being promoted through spam.
includes/SpamBlacklist.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. If nothing is found, the remaining regex tests are allowed to run normally, so that any manually-specified 'suspicious pattern' in the URL may be identified and blocked.
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. The regex, however, would be able to block on any of the text in the URL and path, from "example" to "lottery" and everything in between. Both approaches carry some risk of false-positives - the regex because of the use of wildcard expressions, and the external RBL as these servers are often created for other purposes - such as control of abusive spam email - and may include domains which are not engaged in forum, wiki, blog or guestbook comment spam per se.
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:
- Anti-spam features — includes link to the built-in $wgSpamRegex anti-spam mechanism.
- Combating spam
- Combating vandalism
Diğer anti-spam, anti-vandalizm uzantıları şunları içerir:
References
- ↑ Denial of Service (DOS)
Bu uzantı bir veya daha fazla Wikimedia projelerinde kullanılıyor. Bu, muhtemelen uzantının kararlı olduğu ve bu tür yüksek trafikli web siteleri tarafından kullanılacak kadar iyi çalıştığı anlamına gelir. Nerede kurulduğunu görmek için bu uzantının adını Wikimedia'nın CommonSettings.php ve InitialiseSettings.php yapılandırma dosyalarında arayın. Belirli bir vikide yüklü olan uzantılar listesinin tamamı vikinin Special:Version sayfasında görülebilir. |
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |