Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Het werkt] php spambeveiliging  (gelezen 2181 keer)

[Het werkt] php spambeveiliging
« Gepost op: 2009/06/12, 09:57:11 »
Op de site van mijn chiro heb ik een Reageersysteem toegevoegd, zodat mensen kunnen reageren op de nieuwsberichten. Vandaag keek ik op de site, en wat zag ik: spam  :'( echt spam was het niet, maar een hoop wartaal iets in de trant van Ugjsdf Ij skdjfjlk jLJksjdgf kjfsdgjkk lopJK f , met wat BB-tags ertussen. :(

Nu vraag ik me af, hoe kan ik deze internetvandalen stoppen?
Ik had gedacht aan een controle van het emailadres door het tellen van tekens, maar dat is natuurlijk ook gemakkelijk te omzeilen (een adres als azerty@qwerty.com wordt dan doorgelaten)

Heeft iemand een idee hoe ik simpel een spambotbeveiliging kan inbouwen?

thx Lennert
« Laatst bewerkt op: 2009/06/13, 11:04:04 door schwarzproductions »

Offline Kiwinote

  • Lid
    • Launchpad
Re: php spambeveiliging
« Reactie #1 Gepost op: 2009/06/12, 10:09:00 »
Alles tegenhouden kan natuurlijk niet tenzij je vantevoren zelf alles modereert. Anders valt te denken aan een ip-block dat je instelt nadat je een spam-bericht hebt ontvangen. Voor een kleine site is de eerste optie waarschijnlijk het makkelijkst.

Re: php spambeveiliging
« Reactie #2 Gepost op: 2009/06/12, 10:16:55 »
Ik bekijk even de mogelijkheden om zo'n mod-knop in te voegen.
Nu kan ik ze al gemakkelijk verwijderen uit de databank, maar inderdaad een knop weergeven zou gemakkelijk zijn.

Ik denk nu aan een exra rij in de db, bv comment_show, waar de waardes 1 of 0 kunnen zijn.
waar de reacties weergeven worden zet ik dus "SELECT * comment WHERE comment_show=1"
Op de admin pagina zet ik dan naast de knop verwijder een knop SHOW, die dan de waarde van comment_show van 0 naar 1 verandert.

Is dit haalbaar of denk ik weer veel te ver?

Offline dvdmeer

  • Lid
    • Python-RandR :: dvdmeer.nl
Re: php spambeveiliging
« Reactie #3 Gepost op: 2009/06/12, 13:23:56 »
Wellicht een captcha functie inbouwen?

Re: php spambeveiliging
« Reactie #4 Gepost op: 2009/06/12, 15:41:58 »
Ik heb het nu voorlopig opgelost door elk bericht te modereren. Het is een kleine site, dus zal het niet zoveel werk zijn...
Ik heb het als volgt gedaan: aan de tabel waar de comments worden opgeslaan een nieuwe veld toegevoegd mod, met als standaardwaarde '0'

En op de nodig pagina's het volgende gezet:
$comments="SELECT * FROM comments WHERE nid=" . $news['news_id'] ." AND mod=1 ORDER BY id ASC";$comment_query = "SELECT count(*) FROM comments WHERE nid={$data['news_id']} AND mod=1";
Daarna heb ik op de comment-beheers pagina het volgende gezet:

<tr>
  <td><?php echo $data['nid']?></td>
  <td><?php echo $data['name'?></td>
  <td><?php echo $data['comment'?></td>
  <td><a href="commentlist.php?id=<?php echo $data['id'?>&action=mod">Toestaan</a></td>
  <td><a href="commentlist.php?id=<?php echo $data['id'?>&action=delete">Verwijderen</a></td>
 </tr>
&
if($action=="delete"){
  //parameters lezen
  $id=$_GET['id'];
  //Record wissen
  $news_SQL_del="DELETE FROM nieuws_comments WHERE id=$id";
  $bool=mysql_query($news_SQL_del);
  if($bool==1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bericht is gewist')</SCRIPT>";
  if($bool<>1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bij het wissen is een fout opgetreden')</SCRIPT>";
}
  //toestaan
if($action=="mod"){
  //parameters lezen
  $id=$_GET['id'];
  //Record toestaan
  $news_SQL_mod="UPDATE nieuws_comments SET mod=1 WHERE id=$id";
  $bool=mysql_query($news_SQL_mod);
  if($bool==1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bericht is goedgekeurd')</SCRIPT>";
  if($bool<>1) echo "<SCRIPT LANGUAGE=JavaScript>window.alert('Bij het goedkeuren is een fout opgetreden')</SCRIPT>";
}

Nu nog testen, want ik raak niet meer op mijn webruimte... (zullen wel een check ofzo aan het doen zijn)

Re: php spambeveiliging
« Reactie #5 Gepost op: 2009/06/13, 09:08:45 »
Ik heb er altijd veel plezier in om mijn code zo onleesbaar mogelijk te krijgen :)

if ($action=="delete"||$action=="mod) echo "<script>window.alert('".((mysql_query((($action=="mod")?"UPDATE":"DELETE FROM")." nieuws_comments ".(($action=="mod")?"SET mod=1 ":"")."WHERE id={$_GET['id']}")?"Actie uitgevoerd":"Bij de actie is een fout opgetreden"))."')</script>";
« Laatst bewerkt op: 2009/06/13, 09:11:39 door Kelderkeuken »

Re: php spambeveiliging
« Reactie #6 Gepost op: 2009/06/13, 10:19:17 »
Ok, mijn bedachte systeem werkt dus niet.
Als ik
$comments="SELECT * FROM comments WHERE nid=" . $news['news_id'] ." AND mod=1 ORDER BY id ASC";toevoeg speelt hij niet meer mee.

Dan krijg ik : Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /files/chirooskaarke/www.chirooskaarke.be/index.php on line 67

als ik de AND mod=1 terug verwijder is het probleem verdwenen. Weet iemand waar dit aan kan liggen?

Re: php spambeveiliging
« Reactie #7 Gepost op: 2009/06/13, 10:56:02 »
Ok, mijn bedachte systeem werkt dus niet.
Als ik
$comments="SELECT * FROM comments WHERE nid=" . $news['news_id'] ." AND mod=1 ORDER BY id ASC";toevoeg speelt hij niet meer mee.

Dan krijg ik : Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /files/chirooskaarke/www.chirooskaarke.be/index.php on line 67

als ik de AND mod=1 terug verwijder is het probleem verdwenen. Weet iemand waar dit aan kan liggen?

je queries zijn niet correct opgemaakt ;) Plaats eens wat ` rond je kolomnamen.

Re: php spambeveiliging
« Reactie #8 Gepost op: 2009/06/13, 11:03:29 »
Heel hartelijk bedankt Cumulus,

dat was inderdaad het probleem.
Nu werkt het !!!  =D =D

Re: [Het werkt] php spambeveiliging
« Reactie #9 Gepost op: 2009/06/16, 00:32:49 »
Ik heb een anti-spam script gemaakt voor een WordPress site en dat werkt prima, zonder captcha of registratie. Het houdt alleen geautomatiseerde spam tegen, maar dat is toch in 99% van de gevallen zo (ter lering & vermaak).

Als op de verstuurknop is geklikt wordt een uit een extern script sessiecode aan het formulier toegevoegd. Alleen posts met een geldige sessiecode komen er door. Om een post te kunnen sturen moet dus eerst de pagina geladen zijn en daadwerkelijk op de verstuur knop geklikt worden.  Voor spammers is het niet de moeite waard om voor niet-standaard antispam oplossingen zoals deze weer een tegenmiddel te maken.

Re: [Het werkt] php spambeveiliging
« Reactie #10 Gepost op: 2009/06/16, 00:50:23 »
Dat is inderdaad een mooie oplossing. Ik beheer ook een wordpress site voor iemand anders, heb de plugin Akismet geïnstalleerd en dat werkt ook prima, hoewel er maar weinig spampogingen zijn.
« Laatst bewerkt op: 2009/06/16, 00:53:17 door Kelderkeuken »

Offline Scormen

  • Lid
    • LinuxOntdekt.Be
Re: [Het werkt] php spambeveiliging
« Reactie #11 Gepost op: 2009/06/16, 08:50:21 »
Op linux-anti-theft.net had ik hier in de beginne ook last van. Ik heb toen Securimage (captcha) geïmplementeerd: http://www.phpcaptcha.org
Zie het voorbeeld: https://www.linux-anti-theft.net/index.php?page=contact
Ubuntu gebruiker #18341 | Linux gebruiker #456955
· Mijn persoonlijke Linux blog