Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Bottien esto

Sivun loppuun

mika132 [22.10.2010 12:16:03]

#

Eli miten voin estää botteja laittamasta viestejä? Foorumilleni tulee mitä ilmeisemmin perinteisiä botti viestejä, niillä ei ole tunnusta eikä mitään, enkä siksi ymmärrä miten ne pääsevät läpi, koska viestiä ei pysty lähettämään jos ei ole tunnusta, mutta kuitenkin:

TÄÄLLÄ

Tuossa linkki yhteen foorumini kategorioista joissa noita aiheita / viestejä on.

Merri [22.10.2010 12:35:33]

#

Koodisi on yhtä reikäjuustoa. Se ei tarkista suojauksia mitenkään, luotat 100% siihen mitä käyttäjä/botti lähettää. Tietokantasi pystyisi vaikka tyhjentämään täydellisesti. Ja sinulla on suojaamattomia huoneita, joille voi pistää ihan mitä vaan.

Suosittelen joko käyttämään valmista foorumisoftaa (erittäin lämpimästi) tai sitten lukemaan hyvin paljon PHP:sta, MySQL:stä ja tietoturvasta. Monet näistä ongelmistasi ovat ihan perustason juttuja, jotka on pakko osata jos meinaa tehdä mitään webbijuttuja.

Sitten kun perustason tietoturva on kunnossa, niin voit alkaa tutkia bottien estämistä.

makumaku [22.10.2010 12:35:57]

#

Kyllä kai esim tuolta sivulta
http://pelila.com/gameheaven/foorumi/uusi_topick.php?topick=uusi&alue=Saannot
voi kuka tahansa lähetellä viestejä.

Paratiisin poika [22.10.2010 12:37:50]

#

Huoh... Eikös tätä olla jo käyty täällä. kuiteskin:

capcha.php

<?php
header("Content-type: image/png");

$merkit = "abcdefghijlmnopqrstuvwxyz123456789";
$merkkijono = "";

for ($i = 0; $i < 10; $i++) {
    $merkkijono .= $merkit[rand(0, 33)];
}

$kuva = imagecreate(124, 38);

$tausta = imagecolorallocate($kuva, 255, 255, 255);
$teksti = imagecolorallocate($kuva, 0, 0, 0);
$viiva = imagecolorallocate($kuva, 0, 0, 255);

imagestring($kuva, 5, 10, 10, $merkkijono, $teksti);
imageline($kuva, 12, 12, rand(0, 40), rand(0, 40), $viiva);
imageline($kuva, 24, 24, rand(0, 40), rand(0, 40), $viiva);
imageline($kuva, 36, 36, rand(0, 40), rand(0, 40), $viiva);

imagepng($kuva);
imagedestroy($kuva);

session_start();
$_SESSION["varmistus"] = "$merkkijono";
?>

send.php

<form action="getmessage.php" name="messagesend" method="post">

Viesti: <br><textarea name="message"></textarea><br><br>
<span class="captcha_text">Captcha varmistus</span><br>
<iframe src="captcha.php" width="150" height="60" name="captcha"></iframe><br><br>
<input type="text" name="captcha"><br><br>
<input type="submit" name="send" value="Post message">
</form>

getmessage.php

<?php
$viesti = $_POST["message"];
$send_captcha = $_POST["captcha"];
session_start();
$captcha = $_SESSION["varmistus"];
if($logged) {
if($send_captcha == "$captcha") {
if(!empty($viesti)) {
//tähän tietokantaan tallentamiset yms.
echo "Kiitos viestistäsi";
}else {
echo "Et ooo sisällä";
  }
}else {
echo "Captcha mennyt sul väärin.";
  }
}else {
echo "Sun viestis näyttää olevan tyhjä...";
}
?>

Toi kuva on iframella et toimis varmasti. itellä ei toiminu ku hain kuvana :DDD Tuo koodi on sit VJGO Tubesta haettu suurimmilta osilta. Saat käyttää ihan ilman (C) merkkejä ja ilman lähteen mainitsemista. En testannut muokautettua koodia mut pitäisi toimia. PS. Noi sivun tyylit on pahasti pielessä...

Edit: Demo: http://vjgo.arkku.net/mediaplayer/login?action=1

Lebe80 [22.10.2010 17:10:19]

#

Siis sul ei toimi, jos sul on iframen tilalla alla oleva koodi?

<img src="http://vjgo.arkku.net/mediaplayer/captcha" />

-tossu- [22.10.2010 19:10:19]

#

Paratiisin poika: Getmessage.php-tiedostossa ovat virheet "Et ooo sisällä" ja "Sun viestis näyttää olevan tyhjä..." väärin päin. Sisennä koodisi, niin huomaat sen itsekkin. Sinun kannattaisi laittaa tarkistukset funktioon, niin välttyisit if-sekasotkulta.

<?php
function foo () {
	if ( <tarkistus1> )
		return "Virhe 1";
	if ( <tarkistus2> )
		return "Virhe 2";
	if ( <tarkistus3> )
		return "Virhe 3";
}
echo foo ();

Paratiisin poika [22.10.2010 19:27:02]

#

Niimpä näyttäisi. Anteeksi. En jaksa käyttää functioita kun ne eivät oikein mulla tahdo toimia...

Merri [23.10.2010 15:41:56]

#

Kyllähän ne funktiot toimii. Jos tulee virhe, niin siinäkin tilanteessa tietokone on toiminut täsmälleen oikein. Kaikki virheet tietokoneissa ovat ihmisen tekemiä (jos jätetään laitteiston rikkoutumiset ja valmistusvirheet pois laskuista).

Jokotai [23.10.2010 16:09:10]

#

Merri kirjoitti:

jos jätetään laitteiston rikkoutumiset ja valmistusvirheet pois laskuista

Nekin ovat ihmisen tekemiä virheitä. Toinen jo koneen suunnittelu vaiheessa tehtyjä. Ja toinen liittyy yleensä myös väärinkäyttöön.

Grez [23.10.2010 16:10:31]

#

Rikkoutuminen voi kylläkin johtua ihan suunnitellun käyttöiän täyttymisestä, eikä siinä tapauksessa ole virhe. (Tietty voi olla käyttäjän virhe, jos ei ottanut riskiä tietoisesti)

Paratiisin poika [23.10.2010 20:02:47]

#

Ihmiset tekee tietokoneet. Ihmisten vika. Ennenkuin sanot että koneet tekee jotkut tietokoneet, niin voiit miettiä mistä ne koneet ovat tulleet, jotka tekevät tietokoneita.... Lisäksi, ne koneet ovat myös eräänlaisia tietokoneita.

Grez [23.10.2010 20:47:26]

#

Paratiisin poika kirjoitti:

Ihmiset tekee tietokoneet. Ihmisten vika.

Kuten sanoin, koneen rikkoutuminen ei välttämättä ole kenenkään vika. Kaikilla koneilla on ominaisuus, että ne kestää tietyn aikaa. Se ei siis tosiaankaan ole vika vaan ominaisuus. Eikä tässä voi syyttää edes huonoa suunnittelua tai puutteellista tekniikkaa.

Paratiisin poika [23.10.2010 20:49:45]

#

suunnitteluvirheistä puhuin...

Clacier [26.10.2010 18:19:00]

#

Sivut on helvetin komeat ja liikeidea on aivan mahtava. Jatka samaa rataa!


Sivun alkuun

Vastaus

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

Tietoa sivustosta