Heim php教程 PHP开发 PHP-Token Token verbesserte Version

PHP-Token Token verbesserte Version

Dec 14, 2016 am 11:55 AM

Gerade aufgrund der Verwendung von Base64 gibt es ein Problem beim Senden dieses Tokens über die GET-Methode.
Zum Beispiel: http://test/test.php?a=1+2
Was Sie mit $_GET["a"] erhalten, ist: 1 2, das heißt, das Pluszeichen ist weg. Zuerst habe ich Urlencode zum Konvertieren verwendet, aber es gab immer einige unerwartete Ergebnisse.

Später dachte ich darüber nach, die Base64-Zeichen auf Folgendes zu beschränken: [A-Za-z0-9+/=] Es gibt so viele, dass das Pluszeichen ein Problem darstellt, also habe ich das Pluszeichen in ein Symbol geändert Das verursacht das Problem nicht. Unterstreichen ist die beste Wahl. Das Folgende ist der geänderte Code:

GEncrypt.inc.php

Der Code lautet wie folgt:


class GEncrypt {
protected static function keyED($txt, $encrypt_key) {
$encrypt_key = md5 ( $encrypt_key );
$tmp = ""; ($i = 0; $i < strlen ( $txt ); $i ++) {
if ($ctr == strlen ( $encrypt_key ))
$ctr = 0;
$tmp .= substr ( $txt, $i, 1 ) ^ substr ( $encrypt_key, $ctr, 1 );
öffentliche statische Funktion encrypt($txt, $key) {
$encrypt_key = md5 ( (( float ) date( "YmdHis" ) + rand ( 10000000000000000, 99999999999999999 )) . rand ( 100000, 999999 ) );
$ctr = 0;
$tmp = "";
for($i = 0; $i < strlen ( $txt ); $i ++) {
if ($ctr == strlen ( $encrypt_key ))
$ctr = 0;
$tmp .= substr ( $encrypt_key, $ctr, 1 ) . (substr ( $txt, $i, 1 ) ^ substr ( $encrypt_key , $ctr , 1 ));
$ctr ++; key ) ) ));
}
//base64 [A-Za-z0-9+/=]
public static function decrypt($txt, $key) {
if($txt == " "){ return false;}
//echo preg_replace("/_/s","+",$txt);
$txt = self::keyED (base64_decode ( preg_replace("/ _/s ​​","+", $txt) ), $key );
$tmp = "";
for($i = 0; $i < strlen ( $txt ); $i + +) {
$md5 = substr ( $txt, $i, 1 );
$i ++; ;
}
return $tmp;}
}

?>


/**
* Prinzip: Wenn Sie die Zuweisung eines Tokens anfordern, finden Sie eine Möglichkeit, ein eindeutiges Token zuzuweisen, base64( Zeit + Rand + Aktion).
* Wenn Sie es senden, notieren Sie das Token und geben Sie an, dass das Token verwendet wurde und kann entsprechend verwendet werden. Es dient der Vermeidung von Doppeleinreichungen.
*
*/ 
class GToken { 

/**
* Alle aktuellen Token abrufen
*
* @return array
*/ 
public static function getTokens() { 
$tokens = $_SESSION[GConfig::SSN_KEY_TOKEN ]; 
if (empty($tokens) && !is_array($tokens)) { 
$tokens = array(); 

$tokens zurückgeben; 


/**
* Erzeuge ein neues Token
*
* @param string $formName
* @param Verschlüsselungsschlüssel $key
* @return string
*/ 

public static function newToken($formName,$key = GConfig::ENCRYPT_KEY ){ 
$token = GEncrypt:: encrypt($formName.session_id(),$key); 
$token zurückgeben; 


/**
* Durch das Löschen eines Tokens wird tatsächlich ein Element zu einem Array in der Sitzung hinzugefügt, was darauf hinweist, dass das Token bereits zuvor verwendet wurde, um eine wiederholte Übermittlung von Daten zu vermeiden.
*
* @param string $token
*/ 
öffentliche statische Funktion dropToken($token){ 
$tokens = self::getTokens(); 
$tokens[] = $token; 
GSession::set(GConfig::SESSION_KEY_TOKEN ,$tokens); 


/**
* Prüfen, ob es sich um den angegebenen Token handelt
*
* @param string $token Der zu prüfende Tokenwert
* @param string $formName
* @param boolean $fromCheck Ob zu Überprüfen Sie die Quelle. Wenn wahr, wird beurteilt, ob die an das Token angehängte Sitzungs-ID mit der aktuellen Sitzungs-ID übereinstimmt.
* @param string $key-Verschlüsselungsschlüssel
* @return boolean
*/ 

öffentliche statische Funktion isToken($token,$formName,$fromCheck = false,$key = GConfig::ENCRYPT_KEY){ 
if(empty($token)) return false; 

$tokens = self::getTokens(); 

if (in_array($token,$tokens)) //如果存在,说明是以使用过的token 
return false; 

$source = GEncrypt::decrypt($token,$key); 

if($fromCheck) 
return $source == $formName.session_id(); 
else{ 
return strpos($source,$formName) === 0; 



öffentliche statische Funktion getTokenKey($token,$key = GConfig::ENCRYPT_KEY){ 
if($token == null || trim($token) == "") return false; 
$source = GEncrypt::decrypt($token,$key); 
return $source != "" ? str_replace(session_id(),"",$source) : false; 


öffentliche Funktion newTokenForSmarty($params){ 
$form = null; 
extract($params); 
return self::newToken($form); 


?>

以上就是PHP令牌 Token改进版的代码实例,希望可以帮助到大家,更多相关内容请关注PHP中文网(www. php.cn)!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was tun, wenn das Login-Token ungültig ist? Was tun, wenn das Login-Token ungültig ist? Sep 14, 2023 am 11:33 AM

Zu den Lösungen für ungültige Login-Tokens gehören die Überprüfung, ob das Token abgelaufen ist, die Überprüfung, ob das Token korrekt ist, die Überprüfung, ob das Token manipuliert wurde, die Überprüfung, ob das Token mit dem Benutzer übereinstimmt, das Löschen des Caches oder der Cookies sowie die Überprüfung der Netzwerkverbindung und des Serverstatus , sich erneut anmelden oder ein neues Token anfordern usw. Detaillierte Einführung: 1. Überprüfen Sie, ob das Token abgelaufen ist. Sobald die Gültigkeitsdauer überschritten ist, wird das Anmelde-Token als ungültig betrachtet.

So lösen Sie das Problem eines ungültigen Anmeldetokens So lösen Sie das Problem eines ungültigen Anmeldetokens Sep 14, 2023 am 10:57 AM

Das Problem eines ungültigen Anmeldetokens kann gelöst werden, indem die Netzwerkverbindung überprüft, die Gültigkeitsdauer des Tokens überprüft, Cache und Cookies geleert, der Anmeldestatus überprüft, der Anwendungsentwickler kontaktiert und die Kontosicherheit erhöht wird. Detaillierte Einführung: 1. Überprüfen Sie die Netzwerkverbindung, stellen Sie die Verbindung zum Netzwerk wieder her oder ändern Sie die Netzwerkumgebung. 2. Überprüfen Sie die Gültigkeitsdauer des Tokens, besorgen Sie sich ein neues Token oder wenden Sie sich an den Entwickler der Anwendung. 3. Löschen Sie den Cache und die Cookies, löschen Sie den Browser Cache und Cookie und melden Sie sich dann erneut bei der Anwendung an. 4. Überprüfen Sie den Anmeldestatus.

So lösen Sie das Problem der Speicherung von Benutzertokens in Redis So lösen Sie das Problem der Speicherung von Benutzertokens in Redis May 31, 2023 am 08:06 AM

Redis speichert Benutzertokens. Beim Entwerfen eines E-Commerce-Systems besteht eine häufige Anforderung darin, dass jede Seite angemeldete Benutzerinformationen enthalten muss. Es gibt zwei gängige Lösungen: die Verwendung von Cookies zum Speichern und die Verwendung von JWT zum Speichern. Wenn jedoch Redis-Cache im System verwendet wird, gibt es auch eine dritte Lösung – das Zwischenspeichern des Benutzertokens in Redis. Generieren Sie beim Anmelden ein Token und speichern Sie es in Redis //Generieren Sie ein Token-Objekt und speichern Sie es in Redis redisTemplate.opsForHash().put("token","user",user)

Analyse der sicheren JWT-Token-Generierungs- und Verifizierungstechnologie in PHP Analyse der sicheren JWT-Token-Generierungs- und Verifizierungstechnologie in PHP Jul 01, 2023 pm 06:06 PM

Analyse der sicheren JWT-Token-Generierungs- und Verifizierungstechnologie in PHP Mit der Entwicklung von Netzwerkanwendungen werden Benutzerauthentifizierung und -autorisierung immer wichtiger. JsonWebToken (JWT) ist ein offener Standard (RFC7519) zur sicheren Übertragung von Informationen in Webanwendungen. In der PHP-Entwicklung ist es gängige Praxis, JWT-Tokens zur Benutzerauthentifizierung und -autorisierung zu verwenden. In diesem Artikel wird die sichere JWT-Token-Generierungs- und Verifizierungstechnologie in PHP vorgestellt. 1. Grundkenntnisse von JWT im Verständnis der Generierung von und

Wie Vue3+Vite zwei Token verwendet, um eine sinnlose Aktualisierung zu erreichen Wie Vue3+Vite zwei Token verwendet, um eine sinnlose Aktualisierung zu erreichen May 10, 2023 pm 01:10 PM

1. Token-Anmeldeauthentifizierungs-JWT: JSONWebToken. Dabei handelt es sich um ein Authentifizierungsprotokoll, das im Allgemeinen zur Überprüfung der angeforderten Identitätsinformationen und Identitätsberechtigungen verwendet wird. Besteht aus drei Teilen: Header, Hayload, Signatureheader: Das sind die Header-Informationen, die die grundlegenden Informationen zur Beschreibung dieses Tokens darstellen. Das JSON-Format {"alg": "HS256" // gibt den Signaturalgorithmus an. Der Standardwert ist HMACSHA256 ( geschrieben als HS256) „type“: „JWT“//Gibt den Typ des JWT-Tokens an, der einheitlich als JWT}pa geschrieben wird

Was bedeutet Token? Was bedeutet Token? Feb 29, 2024 am 10:19 AM

Token ist eine Art virtuelle Währung. Es handelt sich um eine digitale Währung, die zur Darstellung von Benutzerberechtigungen, zur Aufzeichnung von Transaktionsinformationen und zur Bezahlung virtueller Währungen verwendet wird. Token können zur Durchführung von Transaktionen in einem bestimmten Netzwerk, zum Kauf oder Verkauf bestimmter virtueller Währungen und auch zur Bezahlung bestimmter Dienste verwendet werden.

Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor „:'-Token'? Wie behebt man den C++-Syntaxfehler: „Erwarteter Primärausdruck vor „:'-Token'? Aug 26, 2023 pm 04:06 PM

Wie behebt man den C++-Syntaxfehler: 'expectedprimary-expressionbefore':'token'? Syntaxfehler sind ein häufiges Problem bei der C++-Programmierung. Einer der häufigsten Fehler ist die Fehlermeldung „expectedprimary-expressionbefore‘:‘token“. Dieser Fehler tritt normalerweise auf, wenn bedingte Ausdrücke und der ternäre Operator verwendet werden. In diesem Artikel wird die Ursache dieses Fehlers vorgestellt

Der ChatGPT-Kurs von Andrew Ng ging viral: Die KI verzichtete darauf, Wörter rückwärts zu schreiben, verstand aber die ganze Welt Der ChatGPT-Kurs von Andrew Ng ging viral: Die KI verzichtete darauf, Wörter rückwärts zu schreiben, verstand aber die ganze Welt Jun 03, 2023 pm 09:27 PM

Unerwarteterweise würde ChatGPT bis heute immer noch dumme Fehler machen? Meister Ng Enda hat in der letzten Klasse darauf hingewiesen: ChatGPT wird keine Wörter umkehren! Wenn Sie beispielsweise das Wort „lollipop“ umkehren lassen, lautet die Ausgabe „pilollol“, was völlig verwirrend ist. Oh, das ist in der Tat etwas überraschend. So sehr, dass, nachdem ein Internetnutzer, der der Klasse zugehört hatte, einen Beitrag auf Reddit gepostet hatte, dieser sofort eine große Anzahl von Zuschauern anzog und der Beitrag schnell 6.000 Aufrufe erreichte. Und das ist kein zufälliger Fehler. Netizens haben festgestellt, dass ChatGPT diese Aufgabe tatsächlich nicht abschließen kann, und das Gleiche gilt für unsere persönlichen Testergebnisse. △Der eigentliche Test von ChatGPT (GPT-3.5) und sogar vielen Produkten, darunter Bard, Bing, Wen Xinyiyan usw., funktioniert nicht. △Eigentlicher Test Bard△Eigentlicher Test Wen Xinyiyan

See all articles