New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

als-captcha

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

als-captcha

Advanced CAPTCHA library

  • 2.1.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
3
decreased by-57.14%
Maintainers
1
Weekly downloads
 
Created
Source

als-captcha

als-captcha is a Node.js library for generating and validating a simple yet effective captcha. It employs a combination of image recognition with noise and tilt, basic math problem solving, and several other strategies to differentiate between human users and bots.

Installation

To install als-captcha, use npm:

npm i als-captcha

Basic Usage

const Captcha = require('als-captcha');
const captcha = new Captcha() // dafult params and eng language for audio

// create captcha
app.get('/captcha', async (req, res) => {
    const captchaHtml = await captcha.create(req,res,true) // last parameter include audio
    res.send(`<!DOCTYPE html>
<html lang="en">
<head>
   <title>HEllo</title>
</head>

<body>
    <form>
        ${captchaHtml}
    </form>
<body>
</html>
`);
});

// validate captcha
app.post('/submit-captcha', (req, res) => {
    if (catpcha.valid(req)) res.send("right");
    else res.send("wrong");
});

Security Strategies

als-captcha uses multiple strategies to enhance security:

  • Image Recognition Challenge: A captcha image with noise, tilt, and bot-unfriendly font.
  • Math Problem Solving: A basic math problem that must be solved correctly, ensuring complete text recognition.
  • Hidden importantInfo Field: Remains empty and is used to detect bots that might fill it.
  • Bot Detection through onchange Event: If the onchange event does not trigger, the bot field retains its default value, indicating a bot.
  • Timestamp and Screen Dimension Check: Captures the time taken to complete the captcha and multiplies the screen's color depth with its width to generate a unique number, which helps in bot detection.

Advanced Usage

Configuration includes 3 parts:

  • params(Object) - the parameters for captcha class
    • first parameter in constructor
  • lang(String) - the language for audio
    • second parameter in constructor
    • default 'eng', available: eng,ru,he
  • cookieOptions (Object) - options for cookie
    • available as instance.cookieOptions
  • prefix (String): Optional. A prefix for cookie names with encrypted values. Default is 's:'.
  • cryptOptions (Object): Optional. An object for initiating encryption.
    • defaults are: {algorithm: 'aes-256-cbc',ivLength: 16,secretFilePath: './secret'}
      • You can provide any of keys, the other will be replaced with defaults more information for encryption on als-crypt

Parameters

The parameters includes:

  • logger(Function): function for logging errors. Default console.log
  • maxAge (Number): captcha life time (after this time, captcha outdated). Default is 10 minutes
  • filePath (String): The place for saving captcha tokens start. Default join(__dirname, 'captcha-start')

Example for custom cofiguration:

const logs = []
const captcha = new Captcha({
    logger:(...e) => logs.push(e),
    maxAge:1000*60*30,
    filePath:'./captcha-start'
})

Language - lang

The Captcha class using als-math-audio-composer for composing audio for captcha. By default the language is english (eng). At the moment, available languages are:

  • eng - english
  • ru - russian
  • he - hebrew

als-math-audio-composer using sync method to read the files and than caching it. You can cache all needed sounds on init like this:

const captcha = new Captcha({},'ru') // Set Russian as the captcha language
captcha.audioComposer.cacheAll() // Optionally pre-cache all audio files for faster response

The Captcha using crypted cookies for storing token and captcha result. By default cookies sent with the folowing options:

{ 
    path: '/', 
    secure: true, 
    httpOnly: true, 
    maxAge:60*10, 
    sameSite:'lax' 
}

The configuraton builded with als-cookie-options and you can change it. Here is the example how to change:

const captcha = new Captcha()
captcha.cookieOptions.sameSite = 'strict'

Keywords

FAQs

Package last updated on 17 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc