v1.2.0: Umbenennung, zweizeiliger Erfolgstext, Umlaute
This commit is contained in:
@@ -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 '';
|
||||
|
||||
Reference in New Issue
Block a user