WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Stoppa voting-bot (https://www.wn.se/forum/showthread.php?t=8331)

FredrikMH 2005-06-05 23:43

Fick ett litet problem idag på topgamesites.net. En sida fick på ett par timmar 400 röster men det påverkade inte min räknare något alls. Alltså misstänks sidan för att fuska och efter letande i logg filen så tar jag det för givet. Alla normala röster kommer från deras inloggningssida och det ser rätt ut. Men det kommer även röster från en blank sida med endast en länk till min lista.

ferion.com /portal/news.php?code=blaat

Alla röster som kommer därifrån har exakt samma useragent, och inte vilken som hellst :D
210.15.227.8 - - [05/Jun/2005:19:39:07 +0200] "GET /mmorpg__mpog HTTP/1.1" 200 1840 "[samma url som ovan]" "$USER_AGENT"

Detta ip återkommer om och om igen på 2 rader i loggen. Den ena är GET och den andra är POST. Självklart fusk och mitt script kommer endast ihåg den som röstade senast på en sida vilket gör att 2ip räcker. Detta ska jag dock ändra för att dra ner möjligheterna.

Det är flera ipn som kommer från den nämda sidan och alla återkommer om och om i loggen med jämna mellanrum. Så nu undrar jag om ni har något smart sätt att bli immun mot bottar. Hela mitt script bygger på att det är en referrer för annars kan man inte vota alls så det tar bort möjligheten från en del proxys då de tar bort referrern (tror jag).

Lite hjälp tack :D

kullervo 2005-06-06 00:00

Tillåt bara en röst per IP-adress per dygn.

FredrikMH 2005-06-06 00:45

Citat:

Originally posted by kullervo@Jun 6 2005, 00:00
Tillåt bara en röst per IP-adress per dygn.
Jo visst men finns det stoppar ändå inte allt :) Kan man inte göra något som inte en bot klarar av. Kan ju alltid lägga in en text på en bild som man ska skriva ner. Tror iof inte det är så uppskattat

kullervo 2005-06-06 01:13

Om du kör nån javascript-check så kanske du får bort ännu fler. Men du lär ju slippa 99% av alla försök om du sätter en limit på max 1 röst per IP-adress och per dygn.

grazzy 2005-06-06 01:30

Det finns även ett gäng X-flaggor som sätts i headern av vissa proxies.. kan vara värt att kolla på.

FredrikMH 2005-06-06 02:19

Man skulle kunna göra en lista på alla votes som går igenom och prova ansluta på vanliga portar som proxys använder för att kontrollera om det är en proxy med. Har dock ingen aning om hur man gör det i php ;)

Tack för tipset grazzy

hnn 2005-06-06 02:51

Citat:

Originally posted by FredrikMH@Jun 5 2005, 23:43
Alla röster som kommer därifrån har exakt samma useragent, och inte vilken som hellst :D
210.15.227.8 - - [05/Jun/2005:19:39:07 +0200] "GET /mmorpg__mpog HTTP/1.1" 200 1840 "[samma url som ovan]" "$USER_AGENT"

Om alla hade samma useragent, varför inte bara spärra den?

FredrikMH 2005-06-06 04:25

Citat:

Ursprungligen postat av hnn
Citat:

Ursprungligen postat av FredrikMH
Alla röster som kommer därifrån har exakt samma useragent, och inte vilken som hellst :D
210.15.227.8 - - [05/Jun/2005:19:39:07 +0200] "GET /mmorpg__mpog HTTP/1.1" 200 1840 "[samma url som ovan]" "$USER_AGENT"

Om alla hade samma useragent, varför inte bara spärra den?

För att det förmodligen bara är en bugg. Vem sätter "$USER_AGENT" som UserAgent för en sådan bot? Så det hade bara löst problemet tillfälligt och det hade dessutom inte stoppat andra fall.

Jonas 2005-06-06 07:32

Vidarutveckla kullervos ide med javascript.

Ta bort Submit knappen. Ersätt den med en länk: Rösta

Många botar klarar inte av javascript och som kullervo säger, det lär ta bort 99% utav fallen. Vill du ha bort den sista % också så får du lägga till bild verifiering.

zoran 2005-06-06 09:20

Citat:

Originally posted by kullervo@Jun 6 2005, 00:00
Tillåt bara en röst per IP-adress per dygn.
Låter jobbigt för alla som måste använda proxy för att komma åt hemsidan.

(Exempelvis alla Ericssonanställda).

/Zoran

zoran 2005-06-06 10:43

Citat:

Originally posted by FredrikMH@Jun 5 2005, 23:43
Fick ett litet problem idag på topgamesites.net. En sida fick på ett par timmar 400 röster men det påverkade inte min räknare något alls. Alltså misstänks sidan för att fuska och efter letande i logg filen så tar jag det för givet. Alla normala röster kommer från deras inloggningssida och det ser rätt ut. Men det kommer även röster från en blank sida med endast en länk till min lista.

ferion.com /portal/news.php?code=blaat

Alla röster som kommer därifrån har exakt samma useragent, och inte vilken som hellst :D
210.15.227.8 - - [05/Jun/2005:19:39:07 +0200] "GET /mmorpg__mpog HTTP/1.1" 200 1840 "[samma url som ovan]" "$USER_AGENT"

Detta ip återkommer om och om igen på 2 rader i loggen. Den ena är GET och den andra är POST. Självklart fusk och mitt script kommer endast ihåg den som röstade senast på en sida vilket gör att 2ip räcker. Detta ska jag dock ändra för att dra ner möjligheterna.

Det är flera ipn som kommer från den nämda sidan och alla återkommer om och om i loggen med jämna mellanrum. Så nu undrar jag om ni har något smart sätt att bli immun mot bottar. Hela mitt script bygger på att det är en referrer för annars kan man inte vota alls så det tar bort möjligheten från en del proxys då de tar bort referrern (tror jag).

Lite hjälp tack :D

Vad sägs om att när rösten skickas:

1. Kolla om kakan HAS_VOTED är satt
a. Om inte:
1a. Sätt kaka HAS_VOTED till 1
2a. Kolla om kakan HAS_VOTED är satt till 1
x. Om inte: Kasta rösten (kakor kan inte sättas).
y. Om ja: Räkna rösten (kakor kan sättas och den var 0)

b. Om ja:
1b. Kasta rösten (kakan var redan satt)


Visst går det att ha en bot som sätter kakan för att kunna rösta och sen tar bort den, men jag kan knappast tänka mig att någon gått genom hela besväret bara för att lyckas fuska. Tror snarare att det blir så att bottar inte klarar att sätta kakor alls.

/Zoran

kullervo 2005-06-06 11:12

Citat:

Originally posted by Jonas@Jun 6 2005, 06:32
Vidarutveckla kullervos ide med javascript.

Ta bort Submit knappen. Ersätt den med en länk: Rösta

Många botar klarar inte av javascript och som kullervo säger, det lär ta bort 99% utav fallen. Vill du ha bort den sista % också så får du lägga till bild verifiering.

Jag tänkte snarare att man ska räkna fram en checksumma på något som ändras hela tiden. Sedan skitar man ner Javascriptet så hårt att det blir oläsligt och svårt att se hur algoritmen ser ut.

Edit: De där med proxy som grazzy och FredrikMH skrev lät väldigt lovande.

hnn 2005-06-06 14:36

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av FredrikMH
Fick ett litet problem idag på topgamesites.net. En sida fick på ett par timmar 400 röster men det påverkade inte min räknare något alls. Alltså misstänks sidan för att fuska och efter letande i logg filen så tar jag det för givet. Alla normala röster kommer från deras inloggningssida och det ser rätt ut. Men det kommer även röster från en blank sida med endast en länk till min lista.

ferion.com /portal/news.php?code=blaat

Alla röster som kommer därifrån har exakt samma useragent, och inte vilken som hellst :D
210.15.227.8 - - [05/Jun/2005:19:39:07 +0200] "GET /mmorpg__mpog HTTP/1.1" 200 1840 "[samma url som ovan]" "$USER_AGENT"

Detta ip återkommer om och om igen på 2 rader i loggen. Den ena är GET och den andra är POST. Självklart fusk och mitt script kommer endast ihåg den som röstade senast på en sida vilket gör att 2ip räcker. Detta ska jag dock ändra för att dra ner möjligheterna.

Det är flera ipn som kommer från den nämda sidan och alla återkommer om och om i loggen med jämna mellanrum. Så nu undrar jag om ni har något smart sätt att bli immun mot bottar. Hela mitt script bygger på att det är en referrer för annars kan man inte vota alls så det tar bort möjligheten från en del proxys då de tar bort referrern (tror jag).

Lite hjälp tack :D

Vad sägs om att när rösten skickas:

1. Kolla om kakan HAS_VOTED är satt
a. Om inte:
1a. Sätt kaka HAS_VOTED till 1
2a. Kolla om kakan HAS_VOTED är satt till 1
x. Om inte: Kasta rösten (kakor kan inte sättas).
y. Om ja: Räkna rösten (kakor kan sättas och den var 0)

b. Om ja:
1b. Kasta rösten (kakan var redan satt)


Visst går det att ha en bot som sätter kakan för att kunna rösta och sen tar bort den, men jag kan knappast tänka mig att någon gått genom hela besväret bara för att lyckas fuska. Tror snarare att det blir så att bottar inte klarar att sätta kakor alls.

/Zoran

Men om botten inte hanterar kakor ;)

Egentligen bara till o skita i o regga röstningen isåfall..
Men då drabbas ju alla dom som inte röstat

Att använda JS script är nog enklast

Jonas 2005-06-07 01:10

Citat:

Originally posted by zoran@Jun 6 2005, 09:43
Vad sägs om att när rösten skickas:

1. Kolla om kakan HAS_VOTED är satt
a. Om inte:
1a. Sätt kaka HAS_VOTED till 1
2a. Kolla om kakan HAS_VOTED är satt till 1
x. Om inte: Kasta rösten (kakor kan inte sättas).
y. Om ja: Räkna rösten (kakor kan sättas och den var 0)

b. Om ja:
1b. Kasta rösten (kakan var redan satt)


Visst går det att ha en bot som sätter kakan för att kunna rösta och sen tar bort den, men jag kan knappast tänka mig att någon gått genom hela besväret bara för att lyckas fuska. Tror snarare att det blir så att bottar inte klarar att sätta kakor alls.

/Zoran

I PHP (säkert andra språk också) så blir det jobbigt.

Eftersom efter du har kört setcookie() så måste du ladda om sidan för att PHP skall kännas vid den.
Det blir 2st omladdningar varav stortsett en onödig. När det går att göra på fler och bättre sätt.

Med cookies kan man fuska. Det är bara att radera cookien så har man automatiskt rösträtt igen.

grazzy 2005-06-07 02:09

Cookie + IP kommer du långt med (dvs, om det är samma ip men olika cookies så är det "Ok"). Sen kan du även lägga till tex så att på sidan finns det ett javascript som utför en operation, tex lägger ihop två värden med javascript som den sedan submittar och så jämför du resultatet på serversidan. Det är enkelt att göra om du har tillgång till din algoritm. Men det blir jobbigt för en hacker att skriva kod för att anpassa sin bot till det om du använder lite scramble av javascriptskoden och skriver lite klurigt.

Vill du vara helt säker får du ju ta till saker som att folk skall kolla vad det står i en bild osv, men då börjar man kanske tappa lite väl mycket användbarhet.

zoran 2005-06-07 10:01

Citat:

Originally posted by Jonas@Jun 7 2005, 01:10
I PHP (säkert andra språk också) så blir det jobbigt.

Eftersom efter du har kört setcookie() så måste du ladda om sidan för att PHP skall kännas vid den.
Det blir 2st omladdningar varav stortsett en onödig. När det går att göra på fler och bättre sätt.

Med cookies kan man fuska. Det är bara att radera cookien så har man automatiskt rösträtt igen.

Nja, jobbigt o jobbigt. Det du kan göra är att göra en omladdning av en sida som inte ens innehåller något annat än headrar. Då är det inte direkt så jobbigt.

Och visst är det bara att ta bort kakan och rösta igen. Men hur troligt är det att botten är programmerad att ta emot en kaka, när servern frågar om kakan returnera den, och sen radera den?

Min gissning är att bottar oftast är ganska "dummprogramerade" och knappast innehåller stöd för kakor överhuvudtaget. Vem orkar hacka en bott för röstfusk?

/Zoran

hnn 2005-06-08 12:07

Citat:

Originally posted by zoran@Jun 7 2005, 10:01

Min gissning är att bottar oftast är ganska dummprogramerade och knappast innehåller stöd för kakor överhuvudtaget. Vem orkar hacka en bott för röstfusk?
/Zoran

Varför ens koda in cookie stöd i en bot? :P

Oftast kolla man ifall kakan finns eller inte... Finns den inte, så genomförs röstningen...

#EDIT Stavfel..

kullervo 2005-06-08 12:20

Citat:

Ursprungligen postat av hnn
Citat:

Ursprungligen postat av zoran
Min gissning är att bottar oftast är ganska dummprogramerade och knappast innehåller stöd för kakor överhuvudtaget. Vem orkar hacka en bott för röstfusk?
/Zoran


Varför ens koda in cookie stöd i en bot? :P

Oftast kolla man ifall kakan finns eller inte... Finns den inte, så genomförs röstningen...

#EDIT Stavfel..

Eller så gör man först ett cookitest som kollar om klienten klarar av cookies. Gör den inte det så godtas inte rösten.

zoran 2005-06-09 09:12

Citat:

Ursprungligen postat av kullervo
Citat:

Originally posted by -hnn@Jun 8 2005, 11:07
Citat:

Ursprungligen postat av zoran
Min gissning är att bottar oftast är ganska dummprogramerade och knappast innehåller stöd för kakor överhuvudtaget. Vem orkar hacka en bott för röstfusk?
/Zoran


Varför ens koda in cookie stöd i en bot? :P

Oftast kolla man ifall kakan finns eller inte... Finns den inte, så genomförs röstningen...

#EDIT Stavfel..


Eller så gör man först ett cookitest som kollar om klienten klarar av cookies. Gör den inte det så godtas inte rösten.

Vilket jag skrev redan utförligt i tråden :)

/Zoran

Jonas 2005-06-09 15:55

Men ändå, låter som ett dumt förslag ändå att köra med cookies.

Jag vet ett antal personer som stängt av cookies i sina webläsare utav ren skär säkerhet.

zoran 2005-06-10 17:26

Citat:

Originally posted by Jonas@Jun 9 2005, 15:55
Men ändå, låter som ett dumt förslag ändå att köra med cookies.

Jag vet ett antal personer som stängt av cookies i sina webläsare utav ren skär säkerhet.

Ja och? Säkerhet? Det är bara att skriva en disklejmer där det står "För att kunna rösta måste du ha kakor påslagna".

Folks paranoia kan man inte rå för.

/Zoran

FredrikMH 2005-06-12 01:11

Visst klarar antaligen inte bottar av kakor... Problemet ligger nu i att användarnas webbläsare klarar av det och att förlita sig på kakor tänker jag inte göra så det kommer göra system mer osäkert än det redan är idag. Däremot är javascript nog en ultimat lösning. Hur kan jag göra javascriptet oläsligt vid "Visa källa"?

Varför vill man lägga ner besväret av att fuska på en topplista?
1. För att boten förmodligen kommer fungera på andra topplistor också då alla bygger på i princip samma teknik. Klarar man att fuska på den som är mest bevakad så klarar man dem andra också...
2. För att få 2000 besökare per dag från en lista så skulle nog tiden betala av sig i slutändan.


Sen angående proxys så skickar de flesta inte med Referer-headern ändå så då fungerar inte mitt script ändå och de kommer direkt in i listan. Detta endast för SEO. Mitt sript bygger på att alla i en kategori länkar till mindomain.com/kategori. Scriptet kontrollerar om Referern tillhör någon medlem. Om så är fallet så laddas votingscriptet istället för själva listan. En topplista har massor av in-länkar så med tiden hoppas jag att systemet jag använder är bättre än tekniken som de flesta använder vote.php?siteid=xxx.

zoran 2005-06-12 09:44

Citat:

För att dölja sidans kod kan detta script vara av intresse:

Encrypt HTML files and hide source code

Tror du verkligen att det fungerar? Din browser MÅSTE kunna se HTML-koden för att rendera sidan rätt. Sen är det bara att använda lynx eller liknande för att dumpa html-koden till disk.

Citat:


Det finns även JavaSript som kan blocka "visa källa".

Tror du verkligen på det? Vad händer om jag stänger av javascript? Vad händer om jag laddar ner sidan? Vi gör ett test, skapa en sida och "skydda den" så att jag inte ska kunna se koden. Sen kan jag klistra in koden här i forumet.

/Zoran

Jonas 2005-06-12 09:58

Citat:

Originally posted by zoran@Jun 12 2005, 08:44
Citat:


Det finns även JavaSript som kan blocka "visa källa".

Tror du verkligen på det? Vad händer om jag stänger av javascript? Vad händer om jag laddar ner sidan? Vi gör ett test, skapa en sida och "skydda den" så att jag inte ska kunna se koden. Sen kan jag klistra in koden här i forumet.

/Zoran

Fungerar också enbart med IE.
Firefox klarar av att visa koden utmärkt :)


Alla tider är GMT +2. Klockan är nu 09:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson