A lot of people have pointed out that the captcha system on Infinity Next is flawed. This is primarily because of how it handles solutions.
1. Request a document.
2. Captcha is generated and solution is stored to your session.
3. Answer is provided.
4. Answer is checked and reject/accept actions handled.
The problem with this is: if you open a second tab with a captcha, it throws out the previous answer, making perfectly valid solutions suddenly invalid if you tab back. This also means that if your cookie is thrown out (or if you don't have one), then your session may be lost and you have no solution at all. In either scenario, you receive an erroneous "The captcha was not answered correctly" reply and that's very frustrating.
So, copypaste/hotwheels was kind enough to write up a new captcha system in base PHP that I'm now translating into Laravel's architecture as a plugin. This is my third time building a new package for Laravel. Although none of them are "release candidate" yet, I'll eventually redress this technology and polish them off as I continue to develop. Since I'm technically a FOSS development group now, I figure it'd be cool if I opened up some of my assets as independent systems other people might make use of.
The way the new captcha system will work is:
1. Request a document.
2. Captcha is generated and solution is stored in the database.
3. Your captcha is provided with a hash ID.
4. Answer is provided alongside hash.
5. Hash is used to pull answer from DB and is checked against input.
This really simple change makes the software more palatable to no-JS no-Cookie browsers (Tor). The captcha can also be provided with a URL like this:
/cp/captcha/300x72/c0e1c5ceddea124b2f606d310b45157449670adb.png
And that way, if you're using JS to render a new captcha or you've opened an inline document that requires a captcha, the hash can be pulled from the URL string and reliably set.
All of this will be open source as well and a companion library provided with the software.
Post last edited at