Avatar billede fastpoint Nybegynder
05. oktober 2001 - 15:02 Der er 7 kommentarer og
1 løsning

HVordan sikre jeg min toplist mod snyd

Jeg har lavet en toplist i ASP, men det er MEGET let at snyde på den. Hvordan sikre jeg den bedre i mod snyd... har i nogen scripts eller eksempler? Det er sikkert noget med cookies og IP, men hvad ved jeg:=)
Avatar billede cool_casper Nybegynder
05. oktober 2001 - 15:05 #1
Det ville være nemere hvis vi havde noget kode eller URL så man kunne se hvad der kunne laves om på!! :-)
Avatar billede egede Nybegynder
05. oktober 2001 - 15:05 #2
Nu er det lidt svært at vide ud fra din fomrulering, men benyt IP cookies og hele baduljen for at få det mest sikre...
Avatar billede fastpoint Nybegynder
05. oktober 2001 - 15:12 #3
her er in.asp  altså hvor mange besøgende de sender til toplisten.

<%

url = Request.QueryString(\"id\")

    dim strDSN, Conn
    strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"database.mdb\")
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open strDSN

Set RS = conn.Execute(\"select * from toplist where ID =\" & url)

if cdate(request.cookies(\"views\")(cstr(url))) < DateAdd(\"d\",-6,now()) then
    views=cInt(rs(\"views\"))+1
    Set RS2 = conn.Execute(\"UPDATE toplist SET views = \" & views & \" Where ID =\" & url)
    response.cookies(\"views\").expires=DateAdd(\"m\",1,now())
    response.cookies(\"views\").domain = \"www.test.dk\"
    response.cookies(\"views\")(cstr(url))= now()
End If

jwredir = RS(\"url\")

RS.Close
set rs= nothing
conn.Close
set conn = nothing

Response.Redirect (jwredir)
%>


den skulle ellers gerne gemme cookies på computeren men den gør det ikke og jeg har slået cookies til.

Kan i ændre scriptet til det bedre? så den er mere sikker
Avatar billede tmceu Praktikant
05. oktober 2001 - 16:16 #4
Du kan ikke være sikker på at brugerne har cookies aktiveret og derfor vil jeg foreslå at du udvider den tabel der tæller hits med ip-adressen på brugeren, og ja det fylder mere :-)

Request.ServerVariables(\"REMOTE_ADDR\") indeholder brugerens ip-adresse.

strSQL = \"IF (SELECT COUNT(*) FROM Hittabel WHERE ipadr = \'\" & Request.ServerVariables(\"REMOTE_ADDR\") & \"\') = 0\"

strSQL = strSQL & vbCrLf & \"INSERT INTO Hittabel(LinkFelt, ipadr) VALUES(\' & strLink & \"\', \'\" & Request.ServerVariables(\"REMOTE_ADDR\") & \"\')\"

Dette statement indsætter en post for det pågældende link, incl. brugerens ip adresse, men kun hvis vedkommende ikke allerede har gjort det tidligere (fra den samme adresse). Jeg forudsætter at variablen strLink indeholder værdien af det link der er klikket på.
Avatar billede fastpoint Nybegynder
05. oktober 2001 - 16:28 #5
tmceu:

kan du ikke lige kopier og klistrer det stykke script der ind i min da jeg ikke lige kan se hvor den skal være
Avatar billede tmceu Praktikant
05. oktober 2001 - 17:07 #6
<%

url = Request.QueryString(\"id\")

    dim strDSN, Conn
    strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"database.mdb\")
    Set Conn = Server.CreateObject(\"ADODB.Connection\")
    Conn.Open strDSN

strSQL = \"IF (SELECT COUNT(*) FROM Toplist WHERE url=\'\" & url & \"\' AND ipadr = \'\" & Request.ServerVariables(\"REMOTE_ADDR\") & \"\') = 0\"

strSQL = strSQL & vbCrLf & \"INSERT INTO Toplist(url, ipadr) VALUES(\' & url & \"\', \'\" & Request.ServerVariables(\"REMOTE_ADDR\") & \"\')\"

conn.execute strSQL

conn.Close
set conn = nothing

Response.Redirect (url)
%>

Nu vil scriptet indsætte en ny post for hver kombination af url og ip-adresse. Det betyder selvfølgelig at du skal have udvidet din Toplist tabel med et ip-adresse felt, i dette eksempel \"ipadr\". Derudover skal du have tilrettet ovenstående med evt. øvrige felter du opdaterer, som eks. dato.

Dette betyder selvfølgelig at din tabel vil vokse over tid, da du nu har en post pr. ip-adresse/url (+ evt. dato). Dette kan du kompensere for, ved at lave en summeringstabel eks. pr. dag hvor du løbende summerer dine detailposter og ligger dem i summeringstabellen, hvorefter du sletter dem fra detailtabellen.

Du kan gøre dette med et sql script i stil med dette

INSERT INTO SumTabel SELECT Dato, ulr, count(*) from Toplist WHERE Dato < #2001/10/05# GROUP BY Dato, url

Når dette er gået godt, kan du slette de poster du har flyttet over med DELETE FROM Toplist WHERE Dato < #2001/10/05#

Da du anvender Access, skal disse scripts laves som hhv. update query og delete query.

Håber du forstår hvad jeg mener, selv om der skal laves lidt tilretninger før det passer til din database.
Avatar billede fastpoint Nybegynder
05. oktober 2001 - 23:39 #7
jeg får denne fejl


Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'
[Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected \'DELETE\', \'INSERT\', \'PROCEDURE\', \'SELECT\', or \'UPDATE\'.
Avatar billede fastpoint Nybegynder
06. oktober 2001 - 20:41 #8
jeg lukker bare...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester