v1.2.0: Umbenennung, zweizeiliger Erfolgstext, Umlaute

This commit is contained in:
2026-09-21 20:28:05 +02:00
parent bda785662d
commit c9338b18c6
@@ -14,12 +14,12 @@ use JTL\Plugin\PluginInterface;
*
* Warum V1 statt der aktuellen ALTCHA-Widget-Version (v3)?
* Das offizielle JS-Widget v3 nutzt ein neueres, komplexeres Protokoll (PBKDF2/Argon2id/Scrypt mit
* Key-Prefix-Matching), fuer das es keine einfache, robust dokumentierte "Challenge direkt einbetten"-
* Variante ohne zusaetzlichen Netzwerk-Endpunkt gibt. Das klassische V1-Protokoll (SHA-256 Hashcash:
* Client sucht per Brute-Force eine Zahl n, fuer die SHA256(salt+n) == challenge gilt) ist dagegen
* vollstaendig dokumentiert, einfach zu pruefen und wird hier zusammen mit einem kleinen eigenen
* JS-Loeser (assets/fp-altcha.js) eingesetzt. Serverseitig kommt weiterhin der offizielle,
* unveraenderte ALTCHA-Code zum Einsatz (siehe src/Vendor/AltchaOrg/Altcha/V1).
* Key-Prefix-Matching), für das es keine einfache, robust dokumentierte "Challenge direkt einbetten"-
* Variante ohne zusätzlichen Netzwerk-Endpunkt gibt. Das klassische V1-Protokoll (SHA-256 Hashcash:
* Client sucht per Brute-Force eine Zahl n, für die SHA256(salt+n) == challenge gilt) ist dagegen
* vollständig dokumentiert, einfach zu prüfen und wird hier zusammen mit einem kleinen eigenen
* JS-Löser (assets/fp-altcha.js) eingesetzt. Serverseitig kommt weiterhin der offizielle,
* unveränderte ALTCHA-Code zum Einsatz (siehe src/Vendor/AltchaOrg/Altcha/V1).
*/
class AltchaService
{
@@ -28,8 +28,8 @@ class AltchaService
private Altcha $altcha;
/**
* @param string $pluginDir Basisverzeichnis des Plugins (__DIR__ aus Bootstrap.php), fuer die
* automatische Erzeugung des HMAC-Geheimschluessels (siehe getHmacSecret()).
* @param string $pluginDir Basisverzeichnis des Plugins (__DIR__ aus Bootstrap.php), für die
* automatische Erzeugung des HMAC-Geheimschlüssels (siehe getHmacSecret()).
*/
public function __construct(PluginInterface $plugin, string $pluginDir)
{
@@ -64,7 +64,7 @@ class AltchaService
}
/**
* Erzeugt eine neue Pruefung und liefert sie als Array, das 1:1 als JSON in die Seite
* Erzeugt eine neue Prüfung und liefert sie als Array, das 1:1 als JSON in die Seite
* eingebettet werden kann (siehe TemplateHandler).
*
* @return array<string, string|int>
@@ -99,7 +99,7 @@ class AltchaService
}
/**
* Prueft das per POST["altcha"] gesendete, base64-kodierte Loesungs-Payload.
* Prüft das per POST["altcha"] gesendete, base64-kodierte Lösungs-Payload.
*/
public function verifyPost(): bool
{
@@ -114,23 +114,23 @@ class AltchaService
if (!$this->isConfigured()) {
// Kein HMAC-Secret hinterlegt -> Plugin ist nicht korrekt eingerichtet.
// Sicherheitshalber ablehnen statt durchzulassen.
$this->log('kein HMAC-Secret konfiguriert, Pruefung wird abgelehnt');
$this->log('kein HMAC-Secret konfiguriert, Prüfung wird abgelehnt');
return false;
}
$verified = $this->altcha->verifySolution($field, true);
$this->log('Pruefungsergebnis: ' . ($verified ? 'erfolgreich' : 'fehlgeschlagen'));
$this->log('Prüfungsergebnis: ' . ($verified ? 'erfolgreich' : 'fehlgeschlagen'));
return $verified;
}
/**
* Liefert den HMAC-Geheimschluessel. Wurde im Plugin-Einstellungsfeld manuell ein Wert
* eingetragen, hat dieser Vorrang (z. B. um denselben Schluessel bewusst auf mehreren
* Liefert den HMAC-Geheimschlüssel. Wurde im Plugin-Einstellungsfeld manuell ein Wert
* eingetragen, hat dieser Vorrang (z. B. um denselben Schlüssel bewusst auf mehreren
* Installationen zu verwenden). Andernfalls wird beim allerersten Aufruf automatisch ein
* zufaelliger Schluessel erzeugt und in einer eigenen Datei im Plugin-Verzeichnis gespeichert,
* sodass keine manuelle Einrichtung noetig ist.
* zufälliger Schlüssel erzeugt und in einer eigenen Datei im Plugin-Verzeichnis gespeichert,
* sodass keine manuelle Einrichtung nötig ist.
*/
private function getHmacSecret(): string
{
@@ -162,17 +162,17 @@ class AltchaService
$written = @\file_put_contents(
$file,
"<?php\n\n// Automatisch erzeugter HMAC-Geheimschluessel -- nicht manuell bearbeiten.\n"
"<?php\n\n// Automatisch erzeugter HMAC-Geheimschlüssel -- nicht manuell bearbeiten.\n"
. 'return ' . \var_export($secret, true) . ";\n"
);
if ($written === false) {
// Verzeichnis nicht beschreibbar o. Ae. -- sicherheitshalber "nicht konfiguriert"
// Verzeichnis nicht beschreibbar o. Ä. -- sicherheitshalber "nicht konfiguriert"
// melden (siehe isConfigured()/verifyPost()), statt bei jedem Aufruf einen neuen,
// nicht dauerhaften Schluessel zu verwenden.
// nicht dauerhaften Schlüssel zu verwenden.
$this->log(
'Konnte HMAC-Geheimschluessel nicht automatisch speichern (' . $file . '). '
. 'Bitte Schreibrechte pruefen oder Schluessel manuell in den Einstellungen setzen.'
'Konnte HMAC-Geheimschlüssel nicht automatisch speichern (' . $file . '). '
. 'Bitte Schreibrechte prüfen oder Schlüssel manuell in den Einstellungen setzen.'
);
return '';