.github/workflows | ||
config | ||
docs | ||
migrations | ||
src | ||
static | ||
templates | ||
utils | ||
.dockerignore | ||
.gitignore | ||
build.rs | ||
Cargo.lock | ||
Cargo.toml | ||
code_of_conduct.md | ||
Cross.toml | ||
docker-compose.yml | ||
Dockerfile | ||
jest.config.ts | ||
LICENSE.md | ||
Makefile | ||
openapi.yaml | ||
package.json | ||
README.md | ||
rustfmt.toml | ||
sailfish.yml | ||
sqlx-data.json | ||
tsconfig.json | ||
webpack.config.js | ||
yarn-error.log | ||
yarn.lock |
Guard is the back-end component of the mCaptcha system.
mCaptcha uses SHA256 based proof-of-work(PoW) to rate limit users.
When a user wants to do something on an mCaptcha-protected website,
-
they will have to generate proof-of-work(a bunch of math that will takes time to compute) and submit it to mCaptcha.
-
We'll validate the proof:
- if validation is unsuccessful, they will be prevented from accessing their target website
- if validation is successful, read on,
-
They will be issued a token that they should submit along with their request/form submission to the target website.
-
The target website should validate the user-submitted token with mCaptcha before processing the user's request.
The whole process is automated from the user's POV. All they have to do is click on a button to initiate the process.
mCaptcha makes interacting with websites (computationally)expensive for the user. A well-behaving user will experience a slight delay(no delay when under moderate load to 2s when under attack; PoW difficulty is variable) but if someone wants to hammer your site, they will have to do more work to send requests than your server will have to do to respond to their request.
Why use mCaptcha?
- Free software, privacy focused
- Seamless UX - No more annoying CAPTCHAs!
- IP address independent: your users are behind a NAT? We got you covered!
- Automatic bot throttling:
- Resistant to replay attacks: proof-of-work configurations have short lifetimes(30s) and can be used only once. If a user submits a PoW to an already used configuration or an expired one, their proof will be rejected.
Demo
Demo servers are available at:
- https://demo.mcaptcha.org/
- https://demo2.mcaptcha.org/ (runs on a Raspberry Pi!)
Core functionality is working but it's still very much work-in-progress. Since we don't have a stable release yet, hosted demo servers might be a few versions behind
master
. Please check footer for build commit.
Feel free to provide bogus information while signing up(project under development, database frequently wiped).
Self-hosted:
Clone the repo and run the following from the root of the repo:
$ docker-compose -d up
It takes a while to build the image so please be patient :)
Development:
See HACKING.md
Deployment:
See DEPLOYMENT.md
Configuration:
See CONFIGURATION.md