Forum Moderators: coopster
As for 'selecting' the radio button, the form field just needs a value; it's the browser that turns a mouse click into a value for the post. With your new curl knowledge you can post to your form. Since you probably don't have one of those captcha reading scripts you yourself wouldn't be able to get by that, but that's exactly how you'd go about automating the process: curl or sockets.
Actually, you didn't get hacked, you got attacked. Hacked would be the situation if you didn't have the steps you've designed to keep illegitimate votes out.
I've never used sockets. I believe curl does the hard work and by the end uses sockets to do its thing. There's no way [that I know of] that you can tell whether your visitor is coming from a browser or a curl transaction.
I don't know what you mean by "that kind of requested information" - the automated script received exactly what a browser would receive, and used that info to post back to your server. If you didn't send enough information for an automated script to post, it wouldn't be enough information for a browser to post, either.
You can include a text input that you hide (css; display: none), this would filled out by any bot scripts, and if that filed is populated when you receive the request you can ignore it.
5 TimEs nIne or sIx + 7
Mixing up the capital letters like that makes it harder for your legitimate readers and is no impediment at all to robots (which can convert to all-upper or all-lower more easily than a person can, and they won't be annoyed by it, either).
As far as the automated form submission goes, the point is that when a human user fills out the form, they do it all in their browser. Nothing goes back to your server until they click Submit. At that point, their browser packages up the info from the filled-out form and sends it back to your website as a single package of data with a GET or POST request.
All a robot has to do is send that package. They don't even have to get the web page where your form is.
One thing you could do is use .htaccess to ban accesses to your forms handler script unless the referer is the page where your form is. However, many of your legitimate visitors might have referer info turned off, so you'd be banning them, too. Also, I'm sure plenty of robots know that trick, and will just supply the referer it knows you want.
[edited by: SteveWh at 7:55 pm (utc) on Nov. 30, 2008]
All a robot has to do is send that package. They don't even have to get the web page where your form is.
The server in turn detects the mismatch and could simply pretend it "accepted" the form submission. That's just an example that would not require a captcha.
Many bots rely on some common code to automatically process forms. There are many popular web packages so a bot can be pre-programmed to process given forms as these are well known. Once you customize a form submission though, it becomes very hard for someone to figure the relationship of the various form elements with other things like a session cookie.
For instance we have:
1. good.example.com/form1.html -> form to bypass
2. evil.example.com/form2.html -> form presented on the bad guy site
Upon request of the evil.example.com/form2.html page by their own clients, the evil server opens a connection to good.example.com/form1.html pulls-in the form elements and includes them in its form2.html. That will include your captcha (image and input). Now visitor of evil.example.com/form2.html page completes the captcha/riddle thinking it belongs to evil.example.com. Upon submission the evil.example.com takes the data and submits them to your site bypassing your captcha and then he can submit a review, comment, create an account or place an order and spam your site.
This is just a simple example. As they may use intermediate sites or hijack browsers and take advantage of active content to do it so you cannot trace back where it came from. And of course is very hard to defend against it.
So my opinion is as long as you keep your form processing custom and pretend that all form submissions are accepted you're making it harder for them to figure out what is going on.