Open main menu

Kézikönyv:$wgSpamRegex

This page is a translated version of the page Manual:$wgSpamRegex and the translation is 99% complete.

Other languages:
Deutsch • ‎English • ‎français • ‎magyar • ‎polski • ‎中文 • ‎日本語
Access: $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|animalsex|".
                "sex-with|dogsex|adultchat|adultlive|camsex|sexcam|livesex|sexchat|".
                "chatsex|onlinesex|adultporn|adultvideo|adultweb.|hardcoresex|hardcoreporn|".
                "teenporn|xxxporn|lesbiansex|livegirl|livenude|livesex|livevideo|camgirl|".
                "spycam|voyeursex|casino-online|online-casino|kontaktlinsen|cheapest-phone|".
                "laser-eye|eye-laser|fuelcellmarket|lasikclinic|cragrats|parishilton|".
                "paris-hilton|paris-tape|2large|fuel-dispenser|fueling-dispenser|huojia|".
                "jinxinghj|telematicsone|telematiksone|a-mortgage|diamondabrasives|".
                "reuterbrook|sex-plugin|sex-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 [$wgSpamRegex 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:

# 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.

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.

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

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).

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.

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.

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.

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