PHPackages                             networkteam/fusionform-altcha - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. networkteam/fusionform-altcha

ActiveNeos-package[Security](/categories/security)

networkteam/fusionform-altcha
=============================

Use ALTCHA Next-Gen Captcha with Neos.Fusion.Form in Neos CMS

0.2.3(1y ago)11.1k↓79.4%2[1 issues](https://github.com/networkteam/Networkteam.FusionForm.Altcha/issues)MITPHP

Since Apr 10Pushed 1y ago2 watchersCompare

[ Source](https://github.com/networkteam/Networkteam.FusionForm.Altcha)[ Packagist](https://packagist.org/packages/networkteam/fusionform-altcha)[ RSS](/packages/networkteam-fusionform-altcha/feed)WikiDiscussions main Synced 2d ago

READMEChangelogDependencies (3)Versions (6)Used By (0)

[![MIT license](https://camo.githubusercontent.com/4661abfe916186acde514558e7f040833cb63ba7098401a51ce339cbb2b4cf9e/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667)](http://opensource.org/licenses/MIT)[![Packagist](https://camo.githubusercontent.com/4567e345f7b13df131dfe22667a03b35e7545f8d175c77c658fbefe9b0b38546/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6e6574776f726b7465616d2f667573696f6e666f726d2d616c746368612e737667)](https://packagist.org/packages/networkteam/fusionform-altcha)

ALTCHA Next-Gen Captcha for Neos.Fusion.Form
============================================

[](#altcha-next-gen-captcha-for-neosfusionform)

Use ALTCHA Next-Gen Captcha with [Fusion Form](https://github.com/neos/fusion-form) in [Neos CMS](https://neos.io).

Inspired by [NeosRulez.Neos.Form.AltchaCaptcha](https://github.com/patriceckhart/NeosRulez.Neos.Form.AltchaCaptcha)

This package provides a Fusion Form field, which renders and the captcha. Your form will be protected when using the field in combination with the captcha validator.

Installation
------------

[](#installation)

Networkteam.FusionForm.Altcha is available via packagist. Run `composer require networkteam/fusionform-altcha` to install. Internally it requires the [networkteam/flow-altcha](https://github.com/networkteam/Networkteam.Flow.Altcha) package for Neos Flow framework, which brings basic functionality such as ALTCHA service and captcha validator.

Configuration:
--------------

[](#configuration)

The only thing you need to do to make the package work, is to set up an HMAC key for the challenge calculation. Do so by adding the key to setting `Networkteam.Flow.Altcha.challenge.hmac`. Ensure NOT to expose this key to the client.

```
Networkteam:
  Flow:
    Altcha:
      challenge:
        hmac: 'your-secret-hmac-key'
```

All configuration options can be found in `Networkteam.Flow.Altcha` package:

*Packages/Application/Networkteam.Flow.Altcha/Configuration/Settings.yaml*

```
Networkteam:
  Flow:
    Altcha:
      challenge:
        # Hashing algorithm to use (`SHA-1`, `SHA-256`, `SHA-512`, default:`SHA-256`)
        algorithm: SHA-256
        # Minimum number for the random number generator (default: 5,0000)
        minNumber: 5000
        # Maximum number for the random number generator (default: 1,000,000)
        maxNumber: 1000000
        # Expiration time for the challenge in seconds
        expires: 1200
        # Length of the random salt (default: 12 bytes).
        saltLength: 12
        # HMAC key for challenge calculation and solution verification. Ensure NOT to expose this number to the client.
        hmac:
```

Usage with Neos.Fusion.Form
---------------------------

[](#usage-with-neosfusionform)

To make use of the captcha you must extend an existing Neos.Fusion.Form form by adding the captcha field `Networkteam.FusionForm.Altcha:Captcha` to form content. Wrap it in `Neos.Fusion.Form:FieldContainer` to make use of error message rendering.

Then add the captcha field with validator to schema definition:

```
schema {
    captcha = ${Form.Schema.string().validator('Networkteam.Flow.Altcha:Captcha')}
}

```

*Example of simple contact form*

```
prototype(Vendor.Site:Content.SingleStepFormExample) < prototype(Neos.Fusion.Form:Runtime.RuntimeForm) {

    namespace = "single_step_form_example"

    process {

        content = afx`

        `

        schema {
            firstName = ${Form.Schema.string().isRequired()}
            lastName = ${Form.Schema.string().isRequired().validator('StringLength', {minimum: 6, maximum: 12})}
            birthDate =  ${Form.Schema.date().isRequired()}
            message = ${Form.Schema.string().isRequired()}

            // add captha field with validator
            captcha = ${Form.Schema.string().validator('Networkteam.Flow.Altcha:Captcha')}
        }

        action {
            // ...
        }
    }
}

```

Add ALTCHA JavaScript widget
----------------------------

[](#add-altcha-javascript-widget)

The captcha field needs JavaScript for rendering the [ALTCHA widget](https://altcha.org/docs/website-integration). You can use the fusion prototype `Networkteam.FusionForm.Altcha:Script` inside `head.javascripts` section of `Neos.Neos:Page`or CDN as described in [ALTCHA documentation](https://altcha.org/docs/website-integration).

*Add JavaScript to head of Neos.Neos:Page*

```
prototype(Neos.Neos:Page) {
    head {
        javascripts {
            alcha = Networkteam.FusionForm.Altcha:Script
        }
    }
}

```

Alternatively, install the NPM package [altcha](https://www.npmjs.com/package/altcha) and import it to your build process.

Usage with Sitegeist.PaperTiger
-------------------------------

[](#usage-with-sitegeistpapertiger)

This package ships with a content element for [Sitegeist.PaperTiger](https://github.com/sitegeist/Sitegeist.PaperTiger): `Networkteam.FusionForm.Altcha:PaperTiger.Field.Captcha`.

If you use Sitegeist.PaperTiger in your project, the content element is available within group `form.special` of Neos UI content dialog.

FAQ
---

[](#faq)

### How can I use different challenge configuration in my project

[](#how-can-i-use-different-challenge-configuration-in-my-project)

If you want to create different challenges for different forms in your project you can override the global challenge configuration via eel helper in Fusion. Additionally, you have to configure the captcha validator in your schema with the same options.

*Override challenge via prototype nesting and configure schema captcha validator*

```
prototype(Vendor.Site:Content.SingleStepFormExample) < prototype(Neos.Fusion.Form:Runtime.RuntimeForm) {

    prototype(Networkteam.FusionForm.Altcha:Captcha) {
        // use SHA-512 algorithm and different minNumber
        challenge = ${Networkteam.Altcha.Challenge.algorithm('SHA-512').minNumber(3500).create()}
    }

    namespace = "single_step_form_example"

    process {
        schema {
            // use SHA-512 algorithm and different minNumber
            captcha = ${Form.Schema.string().validator('Networkteam.Flow.Altcha:Captcha', { algorithm: 'SHA-512', minNumber: 3500 })}
        }
    }
}

```

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~19 days

Total

5

Last Release

372d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7cbf52f8dce27737b73b79ac2c958434339f3dcf704b17a040956ed9a33eb4ef?d=identicon)[networkteam](/maintainers/networkteam)

---

Top Contributors

[![ger4003](https://avatars.githubusercontent.com/u/1758522?v=4)](https://github.com/ger4003 "ger4003 (1 commits)")[![lneugebauer](https://avatars.githubusercontent.com/u/25110308?v=4)](https://github.com/lneugebauer "lneugebauer (1 commits)")

### Embed Badge

![Health badge](/badges/networkteam-fusionform-altcha/health.svg)

```
[![Health](https://phpackages.com/badges/networkteam-fusionform-altcha/health.svg)](https://phpackages.com/packages/networkteam-fusionform-altcha)
```

###  Alternatives

[neos/demo

Site package for the Neos Demo Site

18188.3k10](/packages/neos-demo)[sandstorm/neostwofactorauthentication

1327.0k](/packages/sandstorm-neostwofactorauthentication)[neos/neos

An open source Content Application Platform based on Flow. A set of core Content Management features is resting within a larger context that allows you to build a perfectly customized experience for your users.

1151.0M777](/packages/neos-neos)[neos/neos-base-distribution

Neos Base Distribution

4366.0k](/packages/neos-neos-base-distribution)[neos/seo

SEO configuration and tools for Neos

141.0M31](/packages/neos-seo)[sitegeist/taxonomy

Manage vocabularies and taxonomies as separate node-hierarchy.

1595.1k1](/packages/sitegeist-taxonomy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
