Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP - Spam esto

Sivun loppuun

konsta93 [15.01.2007 15:19:18]

#

Tuota miten saisi sellaisen eston kun joku kirjoittaa vieraskirjaan, niin että ei voi kun kirjoittaa 1 viestin 5 minuutin sisällä.

tkarkkainen [15.01.2007 15:22:58]

#

Pidä kirjaa siitä, milloin mistäkin IP-osoitteesta on viimeksi kirjoitettu. Helpoiten tämä onnistunee tallentamalla viestin lisäksi myös IP-osoite ja jonkinlainen aikaleima. Sitten tarkastat uuden viestin lähetyksen yhteydessä, onko samasta IP-osoitteesta lähetetty viestiä viimeisen 5 minuutin aikana.

Wizard [15.01.2007 16:25:34]

#

IP osoite ei ole hyvä, koska se voi olla proxy. Session on sitäkin parempi (cookie varalla) ja jos on käytössä kirjautuminen, niin se tietysti ehdottomasti paras.


-W-

Agony [15.01.2007 17:14:01]

#

Parhain omavirittämäni kikka pollin manipuloinnin estämiseksi meni seuraavasti:

1. Sisäänkirjautuneen tunnuksella sallitaan vain yksi ääni per polli
2. Istunnolle sallitaan vain yksi ääni per polli
3. Evästeelle sallitaan vain yksi ääni per polli
4. IP:lle sallitaan yksi ääni per kymmenen minuuttia per polli

Jos joku oikeasti jaksoi nähdä niin paljon vaivaa että kytki selaimesta pois evästeet, sai kyseinen käyttäjä puolestani manipuloida äänestystä miten huvittaa, "selain auki, www.sivu.invalid, ääni pollissa x:lle, selain kiinni, odotetaan kymmenen minuuttia ja sama uudestaan" niin manipuloikoon. 60 ääntä sai jätettyä 10 tunnissa (joka oli noin 2% kokonaisäänistä) tai vaihtoehtoisesti etsiä avoimia proxyja joita alkuun saattaa löytyä & vaihtaa nopeammin mutta 60 proxyn jälkeen homma alkaa varmasti maistumaan puulta.

NiLon [16.01.2007 09:16:53]

#

2 hiiren kliksua ja selaimeni ei tallenna evästeitäsi ollenkaan. F5 10min välein ajaa saman asian, tai jopa selaimen päällejättäminen niin että tekee 10min välein automaattisen päivityksen. Ei nähty vaivaa paljoa :P Ei sillä että haluisin aiheuttaa vaivaa, mutta näin helposti "vaiva" on tehty.

Toki jos haluaa tehdä asian fiksusti, niin unohdetaan koko selain. Koska evästeet tulevat headereissa, jolloin ne voidaan unohtaa kokonaan. Eli toisinsanoen scriptillä asia hoidetaan vielä nätimmin.

Niko [16.01.2007 09:34:44]

#

NiLon: sessiot ei välttämättä tarvitsi evästeitä. Lisäksi evästeet voidaan asettaa toisella sivulla ja formille uniikki id joka toimii vain kerran ja kukaan ei tee f5 spämmii kun vielä tallentamisen jälkeen redirecti niin että selain ei edes ehdota.

Agony [16.01.2007 09:47:02]

#

Jep, sessio kulkee tarvittaessa myös urlissa (ja muillakin keinoilla kuin pelkästään evästeillä). Toki jos näpertää oman html-sivun joka kutsuu spämmättävää pollia voi käydä 10min välein painamassa refreshiä mutta tosimaailmassa: tuonkin kikan tein vain koska oli yksi peeloilija jolla ei ollut elämää (sen lisäksi että kikkaili pollin kanssa), normikäyttäjiä oli loput 2999 vastaajaa.

NiLon [16.01.2007 10:43:44]

#

No suoraan sanottuna, et voi mitenkään pakottaa käyttäjää käyttämään evästeitä tai sessioita. Sessiot toimivat evästeillä. PHP:lle on mahdollisuus asettaa niin että käyttäjä saa vain session id:n, joko evästeillä tai urlissa ja tallentaa datan palvelimelle. Olen myös tietoinen oman id:n luomisesta jne. kuitenkaan asia ei ole tärkeä tässä asiassa, koska sen toimivuus on sama kuin aiemmin esitellyissä. Viritelmän voi kiertää joko jättämällä evästeen huomioimatta tai poistamalla urlista sessionin id:n. Tuo formin validointi toimii ja se onkin paljon suositellumpi tapa kuin yksikään ylläolevista. Eli tehdään formiin vaikka hidden kenttä, johon tulostaan uniikki id (joka kuitenkin on kannassa) ja näin voidaan varmistua että käyttäjän syöte voidaan ottaa "tosissaan". Ongelmaksi kuitenkin muodostuu se että millä perusteilla id luodaan. IP ei toimi luotettavasti proxyn takia. Esim. jos estät soneran proxyn, yksikään soneran proxya käyttävä ei voi käyttää formia. Ongelma on ilmeinen :D Tämän kiertämiseen on tehty hieno ratkaisu eli Captcha. Kyseisessä keinossa on kuitenkin ongelmansa ja heikkoutensa. Kuitenkin joissain tapauksisa hyötysuhde on riittävä.

Niko kirjoitti:

NiLon: sessiot ei välttämättä tarvitsi evästeitä. Lisäksi evästeet voidaan asettaa toisella sivulla ja formille uniikki id joka toimii vain kerran ja kukaan ei tee f5 spämmii kun vielä tallentamisen jälkeen redirecti niin että selain ei edes ehdota.

Tämä viritelmä ei yksinkertaisesti toimi. Redirect on hyödytön, koska se voidaan jättää huomioimatta täysin. Selain toki huomioi sen mutta ei scripti (ellei niin haluta). Evästeiden heikkoudet jo kerroinkin aikaisemmin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta