Jörg Reinholz: url-Eintrag in Formularfeld verhindern

Beitrag lesen

Moin!

Hallo nabo,

hat hier jemand einen Vorschlag, mit dem es Nutzern eines Portals unmöglich gemacht wird, das Namensfeld oder auch andere Formularfelder dazu zu mißbrauchen, ihre eigene URL zu posten?

Schreib Dir meinen, jedenfalls für mich recht ordentlich arbeitenden Spamfilter um. Hinweis: Das Ding ist eine Jugendsünde. Nicht unsicher, aber vom Stil her grottenschlecht:

<?php
function ftx_is_spam($str) {

	# Muster: Eintrag beginnt mit Link:
	$arMuster[]='^http:\/\/';
	$arMuster[]='^<a href';
	$arMuster[]='^\[url=';
	#3 Links:
	$arMuster[]='http:\/\/.*http:\/\/.*http:\/\/';
	
	#5 Sonderzeichen aufeinander
	$arMuster[]='&#[0-9A-F]{2,3};&#[0-9A-F]{2,3};&#[0-9A-F]{2,3};&#[0-9A-F]{2,3};&#[0-9A-F]{2,3};';
	
	#Spam-Begriffe
	$arMuster[]='tramadol]';
	$arMuster[]='viagra';
	$arMuster[]='cialis';
	$arMuster[]='prozac';
	$arMuster[]='pharmacy';
	$arMuster[]='fluotextine';
	$arMuster[]='charts';
	$arMuster[]='investing';
	$arMuster[]='cheap';
	$arMuster[]='sacher[- ]finanz';
	$arMuster[]='thepowerlevel.com';
	$arMuster[]='well-racking.com';
	$arMuster[]='hcracking.com';
	$arMuster[]='doxyciline';
	$arMuster[]='investment';
	$arMuster[]='trading';
	$arMuster[]='profit';
	$arMuster[]='dollars';
	$arMuster[]='farming';
	$arMuster[]='watches';
	$arMuster[]='replica';
	$arMuster[]='gucci';
	$arMuster[]='click here';
	$arMuster[]='stock price';
	$arMuster[]='trading software';
	$arMuster[]='your profit is fully maximized';

	# excec!
		
	$replace['i']='########I#######';
	$replace['l']='########I#######';
	$replace['o']='########O#######';
	$replace['a']='########A#######';
	$replace['c']='########C#######';
	$replace['z']='########C#######';
	
	$replace['########I#######']='[il1]';
	$replace['########O#######']='[o0]';
	$replace['########A#######']='[a@]';
	$replace['########C#######']='[czxs]';
	
        $str=trim(strtolower($str)); 
        $arKeys=array_keys($replace);
	
	foreach ($arMuster as $strMuster) {
	        foreach ($arKeys as $key) {
	             $strMuster=str_replace($key, $replace[$key], $strMuster);
	        }
		if (preg_match('/'.$strMuster.'/',  $str)) { 
			return true;
		}
	}
	return false;
}

Eingabe durch die Funktionen jagen, kommt true zurück ist es Spam.

Jörg Reinholz