Jump to content
php.lv forumi

Kā cīnīties ar viagras spambotiem !


sLiEkA

Recommended Posts

  • Replies 31
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Ir viesugraamata, kuraa spamo viagras spamboti, ? Un kaa tikt valjaa no bota, ja pat nav forma, kuraa var pievienot komentaarus ! Komentaari tiek pievienoti db !

1. Dodu lielu % ka izmantoji jau gatavu kodu ...

 

2. Lai nosuutiitu datus uz Serveri forma nebuut nav nepieciesama

Tu tachu nedomaa , ka SpamBotts ar klaviaturas paliidziibu ! aizpilda formu --> nu taads Robotinsh ;)

Pietiek 1 reizi nokonstateet formas uzbuuvi un viss ....

 

3. forma visus laukus kas norada uz user vardu (parasti name/nick utt... nomaini uz Vards_xx E_pastcc utt ... tas ir Uz LATviskiem terminiem ....

(50% spamboti nokausies pashi par sevi ...)

 

4. CHAPTI kas sastav no vienkarshiem skaitljiem/simboliem parasti ipashi nepaliidz .....

Izmanto metodes ko var veikt tikai cilveks , teiksim izvadi 3 bildiites ar Dazadiem! prieksmetiem un paluudz ievadiit bildiites Nr kur attlots teiksim Kakjis ....

--> spambots Shadu operaciju tiiri fiziski nespej veikt .....

--------

Bet vislabakaa Aizsardziiba ir uzrakstiit formu pasham .... neizmantojot Nekaadus gatavus skriptus ....

Cik esmu taisiijis, nesmu vel uzduries ka ciemos naktu Spamboti ....

Link to comment
Share on other sites

CHAPTI kas sastav no vienkarshiem skaitljiem/simboliem parasti ipashi nepaliidz .....

Vai tieshaam ? Es saprotu, ka ja kaads speciaali tavai formai rakstiis spambotu, tad vienkaarshu captchu nebuus gruuti atpaziit, bet vai tad "general" spamboti speej atpaziit captchas. Kaa arii noteikt, ka tas un tas atteels vot ir captcha, un shii atteela vaartiiba jaaievada tajaa un tajaa laukaa.

 

Bet vislabakaa Aizsardziiba ir uzrakstiit formu pasham .... neizmantojot Nekaadus gatavus skriptus ....

Cik esmu taisiijis, nesmu vel uzduries ka ciemos naktu Spamboti ....

Kaa tad tu to formu raksti, ka spamboti nenaak ciemos ?

Link to comment
Share on other sites

Vēl viens eksotiskāks variants, ja pieļaujama JavaScript izmantošana. Ar pāris ātro pirmskaitļu testu palīdzību uzģenerējam (pareizāk sakot pārbaudam vai randomā uzģenerētie skaitļi varētu būt pirmskaitļi) divus pietiekami lielus (bet ne pārāk lielus) pseidopirmskaitļus (mums nav pat īpaši jāiespringst uz to pirmskaitlīgumu - vismaz ne šī brīža situācijā ciņai ar spambotiem). Atceramies šo skaitļu reizinājumu un aizsūtam to klienta formai, kas ar Javascriptu (te mēs varam iedot klentam kaut vai Eratastena sietu) to sadala pirmreizinātājos (ja klientam paveicas kāds no mūsu uzģenerētajiem skaitļiem nebija pirmskaitlis - tad viņam vajag mazāk resursus) un hidden laukā ieraksta ar komatiem atdalītus pirmreizinātājus. Uz servera sareizinām atsūtītos (ja ir vispār atsūtīti) un pārbaudām, vai sanāk mūsu sūtītais reizinājums (atsūtītie skaitļi var arī nebūt divi, jo kā jau teicu, aizsūtījām pseidopirmskaitļus).

Rezultāts - uz servera algoritma sarežģītība zema - uz klienta augsta - tādēļ spambotam, lai izsūtītu daudz spamus ir jāspēj ne tikai aizpildīt pareizie lauki, bet arī jāiegulda skaitļošanas resursi. Parastajam klientam būs novērojama maza aizture (atkarībā no tā cik maniakāli lielus skaitļus mēs aizsūtījām).

 

Man gan šķiet, ka šobrīd pat nevajag iespringt uz lielu pseidopirmskaitļu ģenerēšanu. Kamēr boti nav iemācījušies, var vienkārši ģenerēt 6 ciparu skaitli un prasīt pretī sadalījumu - tas vispār klienta pusē būs nemanāmi.

 

Tātad apvienojot visas iepriekš minētās lietas kopā - uzģenerējam smuku bildīti ar reizinājumu ar skaidri salasāmiem, glītiem cipariem, lūdzam, lai cilvēks tos ieraksta lauciņā. Pie formas nosūtīšanas JavaScripts uzģenerē kanonisko sadalījumu, uz servera pārbaudām, vai tiešām atsūtītie reizinātāji dod gaidīto reizinājumu (ja gribam ļoti iespringt, tad vēl varam katru reizinātāju pārbaudīt, vai tas nav salikts skaitlis).

Link to comment
Share on other sites

Es neteiktu vis, ka uz klienta sanāktu augsta algoritma sarežģītība.

Ja pieņem, ka skaitlis ielien 32-bitos, tad tādam atrast divus pirmreizinātājus ir nieks. To var ļoti ātri.

Taču, ja skaitlis lielāks par 32-bitu integeru, tad atkal lielāks čakars to visu pašam realizēt.

Link to comment
Share on other sites

Augstāka pēc definīcijas :)

Bet nu ok - tas tā, kā jau teicu - eksotiskāka metode. Bez tam - ja klientam pasaka, rēķini ar šo algoritmu un viņš nabags metās rēķināt, tad vari algoritmu padarīt tik sarežģītu, cik gribi :)

Link to comment
Share on other sites

es ko tādu ielieku un uz šo brīdi man pietiek

 

function bot_slower($str)
{
$org = $str;
$js_name			= 'my' . rand( 1, rand(1, 100000) );
$js_name1			= 'm' . rand( 1, rand(1, 100000) );
$js_name2			= 'y' . rand( 1, rand(1, 100000) );
$f_symbols = rand( 1, rand(1, 40) );
$f_symbols2 = rand( 1, rand(1, 40) );
	$replacement	 = "\n <script type='text/javascript'>";
	$replacement	 .= "\n <!--";
	$replacement .= "\n var $js_name='". substr($str, 0, $f_symbols)."';";
	$replacement .= "\n var $js_name1='". substr($str, $f_symbols, $f_symbols2)."';";
	$replacement .= "\n var $js_name2='". substr($str, $f_symbols2+$f_symbols)."';";
	$replacement	 .= "\n document.write( $js_name );";
	$replacement	 .= "\n document.write( $js_name1 );";
	$replacement	 .= "\n document.write( $js_name2 );";
	$replacement	 .= "\n //-->";
	$replacement	 .= "\n </script>";
return $replacement;
}
echo bot_slower('<input type="hidden" name="bot-check" value="i-am-not-bot" />');

Link to comment
Share on other sites

Man agrak arii bija problema ar spemmeriem tad es uzliku tadu ka intervalu

 

<?
// Shitas viss notiek pec submita
// ir 3 ievadlauki (vards, epasts, komentars)
$sezona="aktiva_sezona";
$intervals=20; # sekundes
$tabula="komentari";

if($_POST[vards] && $_POST[komentars]){
  if($_POST[epasts]) $email=htmlspecialchars($_POST[epasts]);
  else $email="";
  if($_SESSION[$sezona]){
     $uzlikta=$_SESION[$sezona]+$intervals;
     if($uzlikta<=time()) die("Komentāru intervāls $intervals sekundes!");
     else $_SESSION[$sezona]=time();
  }else $_SESSION[$sezona]=time();
  $vards=htmlspecialchars($_POST[vards]);
  $komentars=htmlspecialchars($_POST[komentars]);
  pg_query("insert into $tabula values('', '$vards', '$epasts', '$komentars', '".time()."')");
  die("Komentārs pievienots!");
}
?>

Link to comment
Share on other sites

Neviens spameris nav vēl ticis klāt pēc šādas metodes:

 

HTML + JS:

<input type="hidden" name="qwerty" id="qwerty" value="ok"/>
<input type="submit" name="add_comment" value="Pievienot" onclick="document.getElementById('qwerty').value='derigs'"/>

PHP:

if ($_POST['qwerty'] == 'derigs') {
 // pievienojam
}

 

Bubu minētajos linkos - paslēpšanas metode dažreiz nestrādā, jo ne visi boti vienmēr visu aizpilda. Manā gadījumā nav svarīgi vai aizpilda, jo jābūt "derigs".

Link to comment
Share on other sites

nesaprotu kpc neiet : Notice: Undefined index: poga in c:\program files\easyphp1-8\www\gb.php on line 3, bet ir tachu nodefineets, name"poga"

<input type="text" name="poga" />
<?
if($_POST['poga']!= 'lalala')  
{
 die("dirst ej");
}
?>

Link to comment
Share on other sites

man palīdz http://vanhegan.net/software/akismet/#download

 

ātri un nesāpīgi ieviešams.

 

komentu apstrādājot ar php:

$vars	= array();
foreach ( $_SERVER as $key => $val ) { $vars[ $key ] = $val; }
$vars["user_ip"]		   	= $ip;
$vars["user_agent"]			= $_SERVER["HTTP_USER_AGENT"];
$vars["comment_content"]   	= $komentars;
$vars["comment_author"]			= $autors;

if(akismet_check($vars)){
//spams
}
else{
//pievienojam
}

 

+ protams funkcija jāizmanto no manis dotā linka.

Edited by pilots
Link to comment
Share on other sites


×
×
  • Create New...