Helst bör du använda inbyggda saneringsdfunktioner om sådana finns. Exempelvis mysql_real_escape_string om du hade använt PHP och MySQL. (Vilket du ju nu inte gör.)
Rengör du all data? Även inloggningsformuläret t ex? Kan vara så att hackarna tar sig in den vägen och sedan postar länkar och skit inloggade.
På de "hemliga" sidorna, kollar du ordentligt att användaren har en giltig session innan du tillåter denna att posta? Kan vara så att hackaren på något sätt har listat ut vad dessa filer heter och postar utan att ens vara inloggad.
Generellt sett bör du alltid sätta fnuttar runt all användardata, även om det handlar om ett nummer. Finns inte fnuttarna kan man t ex mata in följande där det ska vara ett nummer:
1 OR 1=1
Detta resulterar i den giltiga frågan
SELECT * FROM users WHERE id = [U]1 OR 1=1[/U]
Alltså, antingen ska id = 1 vara sant, eller så ska vara 1=1 vara sant, och eftersom 1=1 är sant returneras alla rader. Om rad 1 innehåller en användare med högre åtkomst och bara den första raden i resultatet (som antas vara den enda) används, så loggas användaren som denna. Och allra bäst är att utöver det kolla att det som matas in är ett nummer innan du ens utför databasfrågan.
Detta kanske inte är applicerbart direkt på ditt fall, men det är en liten inblick i vilken typ av attacker som finns och vad man måste tänka på.
Du kan även logga alla databasfrågor, av alla typer, precis som de skickas i databasen. På så vis kanske du kan få ledtrådar om var felet ligger. Detta är enklast om du har en egen funktion som allar anrop går igenom så att du är säker på att du inte glömmer något anrop någonstans. Detta är prestandakrävande och bör absolut inte lämnas på på en sida i skarp drift, men kan hjälpa i ett fall som ditt.
Och ja, spammarna har nog automatiska kontroller. Vad de är ute efter är itne att dina besökare ska klicka på länkarna, utan att Google ska se länkarna och placera de sidor som det finns länkar till högre bland resultaten.