Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
dev:284:security [06.12.2020 11:07] – [::getIdKey] Manuela v.d.Decken | dev:284:security [06.12.2020 11:31] – [Timeout Progressbar] Manuela v.d.Decken | ||
---|---|---|---|
Zeile 66: | Zeile 66: | ||
Es können alle skalaren Datentypen übergeben werden: **// | Es können alle skalaren Datentypen übergeben werden: **// | ||
+ | === :: | ||
+ | **Prototype: | ||
+ | * **// | ||
=== :: | === :: | ||
**Prototype: | **Prototype: | ||
- | * **// | + | * **// |
- | === ::sanitizeLifeTime | + | === ::sanitizeTokenLifeTime |
- | **Prototype: | + | **Prototype: |
Ein übergebener Integer-Wert wird auf eine verfügbare Intervallstufe zwischen LIFETIME_MIN und LIFETIME_MAX korrigiert. Ein negativer Wert bei aktiviertem DEBUG-Modus auf DEBUG_LIFETIME, | Ein übergebener Integer-Wert wird auf eine verfügbare Intervallstufe zwischen LIFETIME_MIN und LIFETIME_MAX korrigiert. Ein negativer Wert bei aktiviertem DEBUG-Modus auf DEBUG_LIFETIME, | ||
=== :: | === :: | ||
Zeile 89: | Zeile 92: | ||
=== Formular === | === Formular === | ||
<PHP> | <PHP> | ||
- | use bin\security\SecureTokens; | + | use bin\Security\CsfrTokens; |
- | $aFtan = SecureTokens::getFtan(); | + | $aToken |
$sOutput = '< | $sOutput = '< | ||
- | . '< | + | . '< |
- | . '< | + | . '< |
echo $sOutput; | echo $sOutput; | ||
// Auswertung | // Auswertung | ||
- | if (SecureTokens::checkFtan()) { | + | if (CsfrTokens::checkToken()) { |
/* alles OK */ | /* alles OK */ | ||
- | $iRecordId = SecureTokens::checkIdKey(' | + | $iRecordId = CsfrTokens::decodeIdKey(' |
[…] | […] | ||
} | } | ||
Zeile 106: | Zeile 109: | ||
=== Link === | === Link === | ||
<PHP> | <PHP> | ||
- | use bin\security\SecureTokens; | + | use bin\Security\CsfrTokens; |
- | $aFtan = SecureTokens::getFtan(); | + | $aToken |
- | $sOutput = '<a href=" | + | $sOutput = '<a href=" |
- | | + | |
echo $sOutput; | echo $sOutput; | ||
// Auswertung | // Auswertung | ||
- | if (SecureTokens::checkFtan()) { | + | if (CsfrTokens::checkToken()) { |
/* alles OK */ | /* alles OK */ | ||
- | $iRecordId = SecureTokens::checkIdKey(' | + | $iRecordId = CsfrTokens::decodeIdKey(' |
[…] | […] | ||
} | } | ||
Zeile 122: | Zeile 125: | ||
=== Twig-Template === | === Twig-Template === | ||
<PHP> | <PHP> | ||
- | use bin\security\SecureTokens; | + | use bin\Security\CsfrTokens; |
/* view-script */ | /* view-script */ | ||
$aTwigdata[' | $aTwigdata[' | ||
- | $aTwigdata[' | + | $aTwigdata[' |
- | $aTwigdata[' | + | $aTwigdata[' |
</ | </ | ||
<PHP> | <PHP> | ||
Zeile 134: | Zeile 137: | ||
// Beispiel 1 | // Beispiel 1 | ||
< | < | ||
- | < | + | < |
< | < | ||
[…] | […] | ||
Zeile 140: | Zeile 143: | ||
// Beispiel 2 | // Beispiel 2 | ||
- | <a href=" | + | <a href=" |
</ | </ | ||
<PHP> | <PHP> | ||
Zeile 146: | Zeile 149: | ||
// Beispiel 1 + 2 | // Beispiel 1 + 2 | ||
- | use bin\security\SecureTokens; | + | use bin\Security\CsfrTokens; |
- | if (SecureTokens::checkFtan()) { | + | if (CsfrTokens::checkToken()) { |
- | $record_id = SecureTokens::checkIdKey(' | + | $record_id = CsfrTokens::decodeIdKey(' |
[…] | […] | ||
} | } | ||
Zeile 154: | Zeile 157: | ||
==== Einsatz mit AJAX ==== | ==== Einsatz mit AJAX ==== | ||
- | SecureTokens | + | CsfrTokens |
<div alert> | <div alert> | ||
- | Grundsätzlich gilt natürlich auch für Ajax-Requests die übliche Regel, dass Änderungsanfragen | + | Grundsätzlich gilt natürlich auch für Ajax-Requests die übliche Regel, dass Änderungsanfragen |
- | Bei einem Ajax-Request hingegen wird die Seite ja **nicht** automatisch neu aufgebaut. Also werden auch für die verbrauchten keine neuen FTANs eingetragen. Jeder weitere Aufruf würde also deshalb zwingend eine Fehlermeldung zur Folge haben.\\ | + | Bei einem Ajax-Request hingegen wird die Seite ja **nicht** automatisch neu aufgebaut. Also werden auch für die verbrauchten keine neuen TOKENs |
- | Im Rückschluss bedeutet das, dass in der Ajax-Antwort | + | Im Rückschluss bedeutet das, dass in der Ajax-Antwort |
- | Ab der Version 1.0.1 stellt | + | Ab der Version 1.0.1 stellt |
Um diese neue Funktionalität nutzen zu können, müssen 4 Bedingungen erfüllt werden. | Um diese neue Funktionalität nutzen zu können, müssen 4 Bedingungen erfüllt werden. | ||
<div info> | <div info> | ||
- | - Ein AJAX-Request muss selbstverständlich die beiden Teile der FTAN (name, value) senden. | + | - Ein AJAX-Request muss selbstverständlich die beiden Teile des TOKEN (name, value) senden. |
- Ein AJAX-Request muss den HTTP-Header **KIPA-XAJAX: | - Ein AJAX-Request muss den HTTP-Header **KIPA-XAJAX: | ||
- | - Ein AJAX-Response muss vom Server ein **Ftan** Objekt zurück bringen. | + | - Ein AJAX-Response muss vom Server ein **TOKEN** Objekt zurück bringen. |
- | - Browserseitig muss ein Script dafür sorgen, dass das zurückgelieferte **Ftan** Objekt verarbeitet wird (//RenewFtan(oFtan)//). | + | - Browserseitig muss ein Script dafür sorgen, dass das zurückgelieferte **Token** Objekt verarbeitet wird (//RenewToken(oToken)//). |
</ | </ | ||
**zu Punkt (1): | **zu Punkt (1): | ||
- | Bei GET Requests genügt ein einfacher URL-Argumentestring mit den FTAN-Werten < | + | Bei GET Requests genügt ein einfacher URL-Argumentestring mit den TOKEN-Werten < |
**zu Punkt (2):**\\ | **zu Punkt (2):**\\ | ||
Zeile 179: | Zeile 182: | ||
**zu Punkt (3):**\\ | **zu Punkt (3):**\\ | ||
- | die Rückgabe des Ftan - Objektes. Das ist durch einen Einzeiler sehr einfach zu erledigen.\\ | + | die Rückgabe des Token-Objektes. Das ist durch einen Einzeiler sehr einfach zu erledigen.\\ |
- | < | + | < |
**zu Punkt (4):**\\ | **zu Punkt (4):**\\ | ||
- | Das ist der ' | + | Das ist der ' |
- | <code javascript | + | <code javascript |
< | < | ||
- | function | + | function |
- | var i, ax, regex = new RegExp(oFtan.name + " | + | var i, ax, regex = new RegExp(oToken.name + " |
ax = document.links; | ax = document.links; | ||
for (i = 0; i < ax.length; i++) { | for (i = 0; i < ax.length; i++) { | ||
- | ax[i].href = ax[i].href.replace(regex, | + | ax[i].href = ax[i].href.replace(regex, |
} | } | ||
- | ax = document.getElementsByName(oFtan.name); | + | ax = document.getElementsByName(oToken.name); |
for (i = 0; i < ax.length; i++) { | for (i = 0; i < ax.length; i++) { | ||
- | ax[i].value = oFtan.value; | + | ax[i].value = oToken.value; |
} | } | ||
if (refreshProgress) { | if (refreshProgress) { | ||
- | refreshProgress(oFtan.remain); | + | refreshProgress(oToken.remain); |
} | } | ||
} | } | ||
Zeile 294: | Zeile 297: | ||
* put the following line somwhere after the script above! | * put the following line somwhere after the script above! | ||
*/ | */ | ||
- | updateKiSessionProgressBar({{ | + | updateKiSessionProgressBar({{ |
</ | </ | ||
</ | </ |