Kézikönyv:$wgSpamRegex

From mediawiki.org
This page is a translated version of the page Manual:$wgSpamRegex and the translation is 72% complete.
Outdated translations are marked like this.
Hozzáférés: $wgSpamRegex
Általános kifejezési minta, amely egyezés esetén megtagadja a szerkesztés elmentését.
Bevezetve:1.2.6
Eltávolítva:használatban
Megengedett értékek:(array of regex strings)
Alapértelmezett érték:[]

Bármely, a változóban rögzített szöveggel („regexszel”) egyező szerkesztés wikispamként lesz értékelve és a szerkesztés elmentése nem lesz lehetséges. A $wgSpamRegex minden felhasználóra, még az adminisztrátorokra és bürokratákra is vonatkozik. A csoportonkénti szűrés a Kiterjesztés:AbuseFilter használatával lehetséges. A $wgSpamRegex a MediaWiki egyik leghatékonyabb spamszűrő funkciója. A beállítás nem blokkol minden spamet, de azok mennyiségét drámaian csökkentheti, miközben a jóindulatú szerkesztők emiatt nem szenvednek kárt. A $wgSpamRegex konfigurációja szabja meg a MediaWiki szövegfelismerésének módját, és annak eldöntését, hogy az spam-e.

Figyelem Figyelem: Ha a spamszűrőd csendesen leáll, több memóriára lehet szüksége! Lásd: #pcre.backtrack_limit

Egy nagy példa

A következő példában szereplő beállítást érdemes kipróbálnod saját wikiden; a példawiki egy kis/közepes méretű weboldal, amely spammerek támadásának van kitéve. Illeszd be a következő kódot a LocalSettings.php -ba:

 $wgSpamRegex = ["/".                        # A „/” a nyitó burkolójel
                "s-e-x|zoofilia|sexyongpin|grusskarte|geburtstagskarten|".
                "(animal|cam|chat|dog|hardcore|lesbian|live|online|voyeur)sex|sex(cam|chat)|adult(chat|live)|".
                "adult(porn|video|web.)|(hardcore|teen|xxx)porn|".
                "live(girl|nude|video)|camgirl|".
                "spycam|casino-online|online-casino|kontaktlinsen|cheapest-phone|".
                "laser-eye|eye-laser|fuelcellmarket|lasikclinic|cragrats|parishilton|".
                "paris-(hilton|tape)|2large|fuel(ing)?-dispenser|huojia|".
                "jinxinghj|telemati[ck]sone|a-mortgage|diamondabrasives|".
                "reuterbrook|sex-(with|plugin|zone)|lazy-stars|eblja|liuhecai|".
                "buy-viagra|-cialis|-levitra|boy-and-girl-kissing|". # A szűrendő szavak
                "dirare\.com|".           # A dirare.com a spammer domainje
                "overflow\s*:\s*auto|".   # Megtiltja az „overflow:auto” beillesztését (függetlenül a bármely oldalon elhelyezett szóközöktől)
                "height\s*:\s*[0-4]px|".  # Megtagadja a „height:0px” (a leggyakoribb CSS-spam) beillesztését (függetlenül a bármely oldalon elhelyezett szóközöktől)
                "==<center>\[|".          # A starsearchtool.comról és társoldalairól származó friss spamek
                "\<\s*a\s*href|".         # A href-linkek tiltása, hivatkozás csak wikiszöveggel lehetséges
                "display\s*:\s*none".     # Tiltja a következőt: display:none (regardless of whitespace on either side of the colon)
                "/i"];                     # A „/” lezárja a szűrőt, az „i” hatására pedig az nem függ a kis- és nagybetűktől
                                          # A „\s” a szóközöket jelöli
                                          # A „*” jelentése ismétlés (nulla vagy több alkalommal)
                                          # A „\s*” a nulla vagy több szóközök keresésére utasítja a szűrőt

Az utolsó előtti sor végén nem szerepel a „|” jelölő; ennek oka, hogy a következő sor lezárja a kifejezést, valamint tartalmazza az „i” kapcsolót.

Ez a példa a Meta-Wiki spam-feketelistájáról származik, és gyakori, spamre utaló karakterláncokat tartalmaz, egyben a blokkoláshoz is segítség lehet. CSS-be rejtett spam

A szűrő használata a spamek megakadályozása

Itt találsz egy útmutatót. A $wgSpamRegex-szel való kísérletezés után teszteld az eredményt a próbalapodon. Figyelem! Gondoskodj az álpozitív eredmények kiszűréséről (például hasznos szerkesztések spamként való megjelölése); lásd alább az ÁLPOZITÍVOK KISZŰRÉSE! szakaszt.

A $wgSpamRegex-ben rögzített beállítás egy reguláris kifejezés (lásd a Wikipédia-szócikket és a PHP-útmutatót). A fenti példában egy a PHP szintaxisával egyszerűsített, többsoros kifejezést láthattál. Ezzel a kifejezések rövidebbek, viszont bonyolultabbak lesznek.

Saját kifejezéseid megalkotásakor teszteld őket a PCRE Regex Evaluator oldalon (kattints a PCRE fülre).

Egyszerű példa

Alább egy még egyszerűbb példát láthatsz:

$wgSpamRegex = ["/buy-viagra/"];

Tartsd észben: a cél eldönteni – a szerkesztés spam-e vagy sem? Ezzel a példával bármely, a „buy-viagra” karaktersort tartalmazó szerkesztés nemkívánatosnak lesz jelölve. A kezdő és záró „/” jelek a reguláris kifejezés szintaxisának részét képezik.

Több különböző szó/domain tiltása

Egészítsük ki a példánkat további spamek elfogásához:

$wgSpamRegex = ["/buy-viagra|adultporn|online-casino|dirare\.com|sexcluborgy\.net/"];

A szavak közti „|” jel több spamnek jelölt szót is tilt, valamint a spammerek által reklámozott URL-címeket is megfogja.

A $wgSpamRegex minden közzétenni kívánt szövegre vonatkozik, ideértve az URL-címeket is; ezáltal egy bizonyos spammer ellen hatékony lehet a domaincímek blokkolása.

ÁLPOZITÍVOK ELKERÜLÉSE!

A hasznos szerkesztések spamnek jelölését nehéz elkerülni, ezt leginkább a következő rossz példával lehet szemléltetni:

# Ilyet ne használj!
$wgSpamRegex = ["/cialis/"];

Sok spammer szerkesztésében megtalálható a „cialis” („valami drog. Kit érdekel? Minket nem!”); a szűréshez kézenfekvő lehet a szó tiltása, azonban ezzel például a „specialista” szót sem lehet közzétenni. Ezt a hibát nagyon könnyű elkövetni; igyekezz a reguláris kifejezésben használt szavak megválogatását, mivel a cél a spammerek távol tartása a hasznos szerkesztők zavarása nélkül. Sok esetben megoldást jelenthet a „\b” beillesztése a kifejezés végeire, amely hosszabb szavakban figyeli az adott karakterlánc előfordulását, például: It is very easy to make this kind of mistake. Be careful with your regular expression setting. You want to stop spammers without inconveniencing your users. This problem can be overcome in many cases by including the "\b" word boundary pattern before and after any words that might be contained in a larger word, e.g.

# Ezáltal a „cialis” tiltva lesz, viszont a „specialista” nem
$wgSpamRegex = ["/\bcialis\b/"];

# A beállítással szócsoportokra is szűrhetsz, például:
$wgSpamRegex = ["/\b(cialis|viagra|porn|sex|anal)\b/"];
# Ezzel elkerülhető az „analízis” vagy „Essex” szavak tiltása.

Egyéb tippek

A reguláris kifejezések nagyon hatásosak. A $wgSpamRegex-ben foglalt kifejezések vizsgálata a teljes lapon, vagy az éppen szerkesztett szakaszban történik, nem csak az URL-ekben. Ezáltal szinte bármi nem kívánatos kifejezés tiltható, ha megfelelő kifejezést írsz hozzá (az álpozitívok kiszűrése érdekében a kifejezések legyenek minél specifikusabbak). A következő szakaszban azt mutatjuk be, hogyan használható az eszköz a CSS-be rejtett spamek ellen. This gives you the power to block anything you don't like, if you can work out a good regular expression to match it (be as specific as possible to avoid false positives). In the following section on CSS Hidden Spam we make use of this tool.

Egyezéskor mutatott üzenet

Alapesetben ha a $wgSpamRegex egyezést talál a lapon, a következő üzenet látható:

Az általad elmenteni kívánt lap fennakadt a spamszűrőn. Ennek oka valószínűleg egy feketelistára helyezett hivatkozás.
A spamszűrőn fennakadt szöveg a következő:

[tiltott szó/domainnév]

A szöveg megváltoztatható; ehhez keresd meg a „spampro” üzenetet a „Speciális:Rendszerüzenetek” lapon. A szerkesztést csak az arra jogosultak végezhetik el. Click 'Special Pages' -> 'Wiki data and tools: System Messages', type 'spampro' into the 'Filter by prefix:' field and click 'Go'. If you get 'View Source' instead of 'Edit' on the top tab, then you don't have permission to edit. You need to log in as an sysop user (or the WikiSysop user which you configured during installation).

A „MediaWiki:Spamprotectionmatch” lapon szereplő „$1” mutatja a fennakadt szerkesztés regexét; elrejtéséhez töröld a „$1” változót. Delete '$1' if you want it hidden.

A fennakadt szöveg megjelenítése és elrejtése

Ha egy túl szigorú regexet hoztál létre, vagy egyéb hibát vétettél a beállításkor, akkor ennek hasznos szerkesztések is áldozatul eshetnek. A fenti példa alkalmazásakor jó szándékú módosítások is fennakadhatnak a szűrőn (például felhasználók, akik tényleg Viagra-vásárlásról szeretnének beszélni). Indeed the full example above might match legitimate text in some rare circumstances (maybe your users really do want to talk about buying Viagra).

Az egyezést tartalmazó szöveg listázásával a MediaWiki:Spamprotectionmatch segít az álpozitívok kiszűrésében.

Ezáltal a felhasználók jelezhetik neked a $wgSpamRegex-szel kapcsolatos hibákat.

A szöveg áttekintésével kitalálhatják, hogyan fogalmazhatják át a szöveget ahhoz, hogy folytathassák a szerkesztést.

A szöveg megjelenítése sajnos az oldaladra tévedő spammerek számára is nagyon hasznos információ. Az ilyen szerkesztéseket közzétevők egy része automatikus bot, így ezek nem értelmezik ezt az információt, azonban másik részük (ha hiszed, ha nem) ember. Ők a kapott információt visszaélésekre használhatják fel (például a tiltott domaincím helyett másokat illesztenek be). Nem tudni, mennyire gyakori ez a viselkedés, mindenesetre az a legjobb, ha a szerkesztéseiket minél inkább visszaszorítod. A szöveg elrejtését legegyszerűbben a MediaWiki:Spamprotectionmatch lap kiürítésével végezheted el. Ezt csak akkor tedd meg, ha tisztában vagy azzal, hogy esetleg hasznos szerkesztések is fennakadhatnak a szűrőn, és a lehető legnagyobb körültekintéssel alkottad meg a reguláris kifejezésed. Some spammers are automated bots, so they won't be seeing this information anyway, however many spammers (believe it or not) are humans. These humans could go to the trouble of looking at the matching information, and trying to devise a workaround (e.g. just missing out the domain name that you have blocked, but linking to various other domains). It's difficult to know how prevalent this kind of behavior is, but if you wanted to make life more difficult for them. You could hide the spam matching information by simply setting your MediaWiki:Spamprotectionmatch message as empty. You should only do this if you are very aware of the above points about false positives, and have carefully designed your regexp to avoid them.

CSS-be rejtett spam

A MediaWiki nagyon megengedő a HTML-címkékkel és CSS-stílusokkal kapcsolatban (lásd: meta:Segítség:HTML wikiszövegben).

Ezzel a spammerek elrejthetik a nemkívánatos szerkesztéseiket. Ezek nem fognak látszani olvasáskor, azonban a lapok szerkesztésekor olvashatóak lesznek, illetve a friss változások között is listázódnak. Emellett a viselkedés összezavarhatja a felhasználóidat, ez pedig fontosabb, mint hogy egy spammer linkfarmnak használja a wikidet. Általánosságban: a CSS-be rejtett spam rossz. Az, hogy nem látod (egyszerűen), nem jelenti azt, hogy ignorálhatod is. It doesn't show up on your pages, but it does show up in your edit boxes, and the changes show up in your 'recent changes' display. As such it causes confusion to your legitimate users, and that's before you consider the effects of helping a spammer by hosting their links. Generally 'CSS Hidden Spam' is all bad. Just because you can't see it (easily), doesn't mean you can ignore it.

A problémát először a chongqed.org felhasználói fedezték fel 2005-ben, de 2006-ban a helyzet tovább romlott, amikor úgy látszott, a legtöbb MediaWiki-spammer ezt a módszert használja.

Az általuk használt CSS-trükköket a reguláris kifejezéssel kivédhetjük. Ezek közül kettő a fenti, teljes példában is szerepel (a „|” szimbólum használatával kombinálva):

A <div style="overflow:auto; height:0px;" formájú CSS-spam megelőzése:

$wgSpamRegex = ["/".
  "overflow\s*:\s*auto|".
  "height\s*:\s*[0-4]px|".
  "/i"];

A style="display:none;" formájú CSS-spam megelőzése:

$wgSpamRegex = ["/style\s*=\s*"\s*display\s*:\s*none\s*"/i"];
     # Which parses as follows:
     # "       = PHP string wrapper
     # /       = RegEx opening wrapper

     # style   = search for the string 'style'
     # \s*=\s* = search for an equals sign with any amount of whitespace (including no whitespace) on either end
     # display = search for the string 'display'
     # \s*:\s* = search for a colon sign with any amount of whitespace (including no whitespace) on either end
     # none\s* = search for the string 'none' followed by any amount of whitespace (including no whitespace)

     # /       = RegEx closing wrapper
     # i       = RegEx switch makes tests case-insensitive
     # "       = PHP string wrapper
     # ;       = PHP line end

Egy szigorúbb beállítási mód, ha megtiltod egyes CSS-stílusattribútumok használatát:

$wgSpamRegex = ["/\<.*style.*(display|position|overflow|visibility|height)\s*:.*>/i"];

…de ezzel hasznos felhasználóidat is túlságosan korlátozhatod.

MINDEN külső hivatkozás tiltása

A következő kóddal minden külső hivatkozás közzétételét megtilthatod:

# MINDEN külső hivatkozás tiltása
$wgSpamRegex = ["/https?:\/\//"];
$wgSummarySpamRegex = "/https?:\/\//";

Ezzel a beállítással a wiki hasznos felhasználói sem szúrhatnak be többé linkeket. Ez egy gyenge próbálkozás a spamprobléma megoldására, de még mindig jobb, mint a teljes lezárás. It is a poor solution to the spam problem, although it is marginally better than a complete lock down.

Ha ezt szeretnéd használni, a MediaWiki:Spamprotectiontext tartalmazza a művelet indoklását.

Max 100 külső hivatkozás közzététele

Limitálhatod a külső hivatkozások laponkénti számát, például maximum 100-ra:

# A laponkénti maximum külső hivatkozások száma (a *?-ben szereplő ?-jel a szabály kevésbé szigorú és a * hatékonyságához kell)
$wgSpamRegex = ["/(http:(.|\n)*?){101}/"];

Ha ezt szeretnéd használni, a MediaWiki:Spamprotectiontext tartalmazza a művelet indoklását.

pcre.backtrack_limit

Figyelem Figyelem: Ha a spamszűrőd csendesen leáll, több memóriára lehet szüksége! Vagy szükséges lehet a spamszűrő jobb megírása, hogy ne pazarolja önmagát: a hatékonyságot nagyban segíti a ?-jel kiegészített *: „*?”! Saját kifejezéseid megalkotásakor teszteld őket a PCRE Regex Evaluator oldalon (kattints a PCRE fülre).

A PHP-ban az 5.3.7 verzió óta egy pcre.backtrack_limit található, melynek automatikus értéke egymillió. Azonban ez még mindig túl alacsony lehet. Módosításhoz add hozzá a következőt a „LocalSettings.php”-hoz:

// Perl Compatible Regular Expressions backtrack memórialimit
ini_set( 'pcre.backtrack_limit', '2M' );

Ha ez még mindig nem elég, növeld a wikid tényleges szükségletéig.

Lásd még