I'm using the following security(invisble captcha) for my site's form submission to prevent auto submission:
- generate the result of md5 with a fixed salt on number x and render it inside the form as a hidden field
- generate 2 hidden fields a and b where a + b = x, a and b are unencrypted
- upon submission, use javascript to add another plain hidden field c where c=a+b
- on server side apply md5 on c with the salt, compare it with encrypted x
However such system is cracked in production, one person was able to auto-submit thousands of forms successfully. Any idea how?
One way to do it is, the hacker already knows that the operation is + (simple to find out by observation of javascript), read the form and add a and b, create a new form with the extra c field where c=a+b. He has to first read a form, then create one for submission.
My questions are:
- Is the hypothesis I presented above the likely way to break my system?
- If so, what should I do to prevent this kind of hack?
- What are other alternative hacks the hacker might use?
I don't want to use real captcha because it degrades user experience. All suggestions are welcome.