国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end tutoriel php Explication détaillée des principes de sérialisation et de désérialisation PHP

Explication détaillée des principes de sérialisation et de désérialisation PHP

Jan 16, 2018 pm 01:40 PM
php principe Sérialisation

Cet article partage principalement avec vous les connaissances pertinentes sur les principes de sérialisation et de désérialisation PHP dans la série sur les vulnérabilités de désérialisation PHP. Les amis qui en ont besoin peuvent s'y référer. J'espère que cela aide tout le monde.

Préface

La sérialisation et la désérialisation des objets ne seront pas décrites en détail. Le résultat de la sérialisation en PHP est une cha?ne personnalisée en PHP. est quelque peu similaire à json.

Nous devons résoudre plusieurs problèmes lors de la conception de la sérialisation et de la désérialisation d'objets dans n'importe quel langage

Après la sérialisation d'un objet, le résultat de la sérialisation Il a une fonction auto-descriptive (conna?tre le type spécifique de l'objet à partir du résultat de la sérialisation.

Il ne suffit pas de conna?tre le type. Bien s?r, il faut aussi conna?tre la valeur spécifique correspondant à ce type

Contr?le des autorisations pendant la sérialisation, vous pouvez personnaliser les champs de sérialisation, etc., par exemple, il est très pratique de le faire dans Golang.


Problèmes de performances temporelles?: dans certaines performances -scénarios sensibles Dans ces circonstances, la sérialisation des objets ne peut pas être un obstacle, par exemple : des services hautes performances (j'utilise souvent protobuf pour sérialiser


Problèmes de performances spatiales : le résultat après sérialisation ne peut pas l'être aussi). long, comme un objet Int, après la sérialisation, la longueur des données devient 10 fois la longueur de int, alors il y a un problème avec cet algorithme de sérialisation.


Cet article explique uniquement la sérialisation et l'inverse dans PHP du point de vue du code PHP Le processus de sérialisation. N'oubliez pas que la sérialisation et la désérialisation ne fonctionnent que sur les données d'objet. Toute personne ayant de l'expérience dans le développement orienté objet devrait facilement comprendre cela. méthode de désérialisation unserialize

php fournit nativement une fonction de sérialisation d'objet, contrairement à c++...^_^ Il est également très simple à utiliser, juste deux interfaces.
<.>


class fobnn
{
 public $hack_id;
 private $hack_name;
 public function __construct($name,$id)
 {
  $this->hack_name = $name;
  $this->hack_id = $id;
 }
 public function print()
 {
  echo $this->hack_name.PHP_EOL;
 }
}
$obj = new fobnn(&#39;fobnn&#39;,1);
$obj->print();
$serializedstr = serialize($obj); //通過(guò)serialize接口序列化
echo $serializedstr.PHP_EOL;;
$toobj = unserialize($serializedstr);//通過(guò)unserialize反序列化
$toobj->print();
Voir la deuxième ligne de sortie Cette cha?ne est le résultat de la sérialisation. Cette structure est en fait très facile à lire, vous. peut constater qu'il est mappé via le nom de l'objet/le nom du membre. Bien s?r, les noms d'étiquettes après sérialisation des membres avec des droits d'accès différents sont légèrement différents.


Selon les trois questions que j'ai mentionnées ci-dessus, nous pouvons alors passer à autre chose. jetez un ?il

fobnn
O:5:"fobnn":2:{s:7:"hack_id";i:1;s:16:"fobnnhack_name";s:5:"fobnn";}
fobnn
1. Fonction auto-descriptive

O:5:"fobnn":2 où o représente le type d'objet et le nom du type est fobnn. 2 signifie qu'il y a 2 objets membres.

Concernant les objets membres, il s'agit en fait du même ensemble de sous-descriptions. Il s'agit d'une définition récursive. La fonction de

auto-description est principalement. pour enregistrer l'objet et Le nom du membre est implémenté.

2. Problèmes de performances

Les performances temporelles de la sérialisation PHP ne seront pas analysées dans cet article, mais les. le résultat de la sérialisation est en fait similaire au protocole défini par json/bson , il y a un en-tête de protocole, l'en-tête du protocole décrit le type et le corps du protocole décrit la valeur correspondant au type, et le résultat de la sérialisation ne sera pas compressé

2. Méthode magique en désérialisation

Correspond au deuxième problème évoqué ci-dessus. En fait, il existe des solutions en PHP. L'une est par la méthode magique, et la. la deuxième consiste à utiliser la fonction de sérialisation personnalisée. Présentons-la d'abord les méthodes magiques __sleep et __wakeup



. __dormir d'abord avant la sérialisation et renvoyer un tableau de noms de membres qui doivent être sérialisés. De cette fa?on, nous pouvons contr?ler les données qui doivent être sérialisées. Dans le cas où je n'ai renvoyé que hack_name, vous pouvez voir que seul le membre hack_name est. sérialisé dans le résultat.
class fobnn
{
 public $hack_id;
 private $hack_name;
 public function __construct($name,$id)
 {
  $this->hack_name = $name;
  $this->hack_id = $id;
 }
 public function print()
 {
  echo $this->hack_name.PHP_EOL;
 }
 public function __sleep()
 {
  return array("hack_name");
 }
 public function __wakeup()
 {
  $this->hack_name = &#39;haha&#39;;
 }
}
$obj = new fobnn(&#39;fobnn&#39;,1);
$obj->print();
$serializedstr = serialize($obj);
echo $serializedstr.PHP_EOL;;
$toobj = unserialize($serializedstr);
$toobj->print();

Une fois la sérialisation terminée. Après cela, __wakeup sera utilisé ici, nous pouvons effectuer un travail de suivi, comme la reconnexion à la base de données. 3. Personnaliser l'interface sérialisable

fobnn
O:5:"fobnn":1:{s:16:"fobnnhack_name";s:5:"fobnn";}
haha

Grace à cette interface, nous pouvons personnaliser le comportement de sérialisation et de désérialisation. Cette fonction peut principalement être utilisée pour personnaliser notre format de sérialisation. .


interface Serializable {
abstract public string serialize ( void )
abstract public void unserialize ( string $serialized )
}

Après avoir utilisé l'interface de sérialisation personnalisée, notre méthode magique est inutile.


4.PHP Type dynamique et désérialisation PHP
class fobnn implements Serializable
{
 public $hack_id;
 private $hack_name;
 public function __construct($name,$id)
 {
  $this->hack_name = $name;
  $this->hack_id = $id;
 }
 public function print()
 {
  echo $this->hack_name.PHP_EOL;
 }

 public function __sleep()
 {
  return array(&#39;hack_name&#39;);
 }

 public function __wakeup()
 {
  $this->hack_name = &#39;haha&#39;;
 }

 public function serialize()
 {
  return json_encode(array(&#39;id&#39; => $this->hack_id ,&#39;name&#39;=>$this->hack_name ));
 }

 public function unserialize($var)
 {
  $array = json_decode($var,true);
  $this->hack_name = $array[&#39;name&#39;];
  $this->hack_id = $array[&#39;id&#39;];
 }
}
$obj = new fobnn(&#39;fobnn&#39;,1);
$obj->print();
$serializedstr = serialize($obj);
echo $serializedstr.PHP_EOL;;
$toobj = unserialize($serializedstr);
$toobj->print();


Depuis la fonction auto-descriptive mentionnée ci-dessus, le type d'objet est enregistré dans le résultat de la sérialisation, et PHP est un langage typé dynamiquement , alors nous pouvons faire une expérience simple.
fobnn
C:5:"fobnn":23:{{"id":1,"name":"fobnn"}}
fobnn

Nous modifions le résultat de la désérialisation de hack_name en type int, i:12345


On peut constater que l'objet a été sérialisé avec succès ! Et cela peut fonctionner normalement. Bien s?r, ce mécanisme de PHP fournit une syntaxe flexible et modifiable, mais il introduit également des risques de sécurité ! analyser PHP plus tard Problèmes de sécurité causés par les fonctionnalités de sérialisation et de désérialisation.

class fobnn
{
 public $hack_id;
 public $hack_name;
 public function __construct($name,$id)
 {
  $this->hack_name = $name;
  $this->hack_id = $id;
 }
 public function print()
 {
  var_dump($this->hack_name);
 }
}
$obj = new fobnn(&#39;fobnn&#39;,1);
$obj->print();
$serializedstr = serialize($obj);
echo $serializedstr.PHP_EOL;;
$toobj = unserialize($serializedstr);
$toobj->print();
$toobj2 = unserialize("O:5:\"fobnn\":2:{s:7:\"hack_id\";i:1;s:9:\"hack_name\";i:12345;}");
$toobj2->print();
Recommandations associées?:


Partage d'exemples de code d'exemple de sérialisation de formulaire jQuery

string(5) "fobnn"
O:5:"fobnn":2:{s:7:"hack_id";i:1;s:9:"hack_name";s:5:"fobnn";}
string(5) "fobnn"
int(12345)

Explication sur la conversion des valeurs de formulaire sérialisé jQuery en exemples Json


Explication détaillée de la vulnérabilité de désérialisation de session de PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
PHP appelle AI Intelligent Voice Assistant Assistant PHP Interaction System Construction PHP appelle AI Intelligent Voice Assistant Assistant PHP Interaction System Construction Jul 25, 2025 pm 08:45 PM

L'entrée vocale de l'utilisateur est capturée et envoyée au backend PHP via l'API MediaRecorder du JavaScript frontal; 2. PHP enregistre l'audio en tant que fichier temporaire et appelle STTAPI (tel que Google ou Baidu Voice Recognition) pour le convertir en texte; 3. PHP envoie le texte à un service d'IA (comme Openaigpt) pour obtenir une réponse intelligente; 4. PHP appelle ensuite TTSAPI (comme Baidu ou Google Voice Synthesis) pour convertir la réponse en fichier vocal; 5. PHP diffuse le fichier vocal vers l'avant pour jouer, terminant l'interaction. L'ensemble du processus est dominé par PHP pour assurer une connexion transparente entre toutes les liens.

Comment utiliser PHP pour créer des fonctions de partage social PHP Partage d'interface Pratique Comment utiliser PHP pour créer des fonctions de partage social PHP Partage d'interface Pratique Jul 25, 2025 pm 08:51 PM

La méthode principale de création de fonctions de partage social dans PHP est de générer dynamiquement des liens de partage qui répondent aux exigences de chaque plate-forme. 1. Obtenez d'abord la page actuelle ou les informations d'URL et d'article spécifiées; 2. Utilisez UrLencode pour coder les paramètres; 3. épisser et générer des liens de partage en fonction des protocoles de chaque plate-forme; 4. Afficher les liens sur l'avant pour que les utilisateurs puissent cliquer et partager; 5. Générez dynamiquement des balises OG sur la page pour optimiser l'affichage du contenu du partage; 6. Assurez-vous d'échapper à la saisie des utilisateurs pour empêcher les attaques XSS. Cette méthode ne nécessite pas d'authentification complexe, a de faibles co?ts de maintenance et convient à la plupart des besoins de partage de contenu.

Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Comment utiliser PHP combiné avec l'IA pour obtenir la correction de texte de la syntaxe PHP détection et l'optimisation Jul 25, 2025 pm 08:57 PM

Pour réaliser la correction d'erreur de texte et l'optimisation de la syntaxe avec l'IA, vous devez suivre les étapes suivantes: 1. Sélectionnez un modèle ou une API d'IA appropriée, tels que Baidu, Tencent API ou bibliothèque NLP open source; 2. Appelez l'API via Curl ou Guzzle de PHP et traitez les résultats de retour; 3. Afficher les informations de correction d'erreur dans l'application et permettre aux utilisateurs de choisir d'adopter l'adoption; 4. Utilisez PHP-L et PHP_CODESNIFFER pour la détection de syntaxe et l'optimisation du code; 5. Collectez en continu les commentaires et mettez à jour le modèle ou les règles pour améliorer l'effet. Lorsque vous choisissez AIAPI, concentrez-vous sur l'évaluation de la précision, de la vitesse de réponse, du prix et du support pour PHP. L'optimisation du code doit suivre les spécifications du PSR, utiliser le cache raisonnablement, éviter les requêtes circulaires, revoir le code régulièrement et utiliser x

PHP crée un système de commentaires de blog pour monétiser la revue des commentaires PHP et la stratégie anti-brosse PHP crée un système de commentaires de blog pour monétiser la revue des commentaires PHP et la stratégie anti-brosse Jul 25, 2025 pm 08:27 PM

1. La maximisation de la valeur commerciale du système de commentaires nécessite de combiner la livraison précise de la publicité native, les services à valeur ajoutée par l'utilisateur (tels que le téléchargement d'images, les commentaires de recharge), d'influencer le mécanisme d'incitation basé sur la qualité des commentaires et la conformité de la monétisation anonyme des données de données; 2. La stratégie d'audit doit adopter une combinaison de mécanismes de filtrage des mots clés dynamiques pré-audit et de signalement des utilisateurs, complétés par une note de qualité des commentaires pour réaliser une exposition hiérarchique de contenu; 3. Anti-brosses nécessite la construction d'une défense multicouche: la vérification sans capteur RecaptChav3, le robot de reconnaissance de champ de miel, IP et la limite de fréquence d'horodatage empêchent l'arrosage, et la reconnaissance du modèle de contenu marque les commentaires suspects et itéra en continu pour traiter les attaques.

Comment utiliser PHP pour combiner l'IA pour générer une image. PHP génère automatiquement des ?uvres d'art Comment utiliser PHP pour combiner l'IA pour générer une image. PHP génère automatiquement des ?uvres d'art Jul 25, 2025 pm 07:21 PM

PHP n'effectue pas directement un traitement d'image AI, mais s'intègre via les API, car il est bon dans le développement Web plut?t que dans les taches à forte intensité informatique. L'intégration de l'API peut atteindre une division professionnelle du travail, réduire les co?ts et améliorer l'efficacité; 2. Intégration des technologies clés incluez l'utilisation de Guzzle ou Curl pour envoyer des demandes HTTP, le codage et le décodage des données JSON, l'authentification de la sécurité des clés de l'API, les taches de traitement de la file d'attente asynchrones, les taches prenant du temps, la gestion des erreurs robuste et le mécanisme de retrait, le stockage et l'affichage d'images; 3. Les défis courants incluent le co?t des API incontr?lable, les résultats de génération incontr?lables, la mauvaise expérience utilisateur, les risques de sécurité et la gestion difficile des données. Les stratégies de réponse consistent à définir des quotas et des caches utilisateur, en fournissant des conseils ProTT et une sélection multi-images, des notifications asynchrones et des invites de progrès, un stockage et un audit de contenu de la variable d'environnement clé et un stockage cloud.

PHP réalise la gestion des stocks de produits de base et la monétisation de la synchronisation et du mécanisme d'alarme de l'inventaire PHP PHP réalise la gestion des stocks de produits de base et la monétisation de la synchronisation et du mécanisme d'alarme de l'inventaire PHP Jul 25, 2025 pm 08:30 PM

PHP assure l'atomicité de la déduction des stocks via les transactions de base de données et les verrous en ligne de Forupdate pour empêcher la survente élevée élevée en simultation; 2. La cohérence de l'inventaire multiplateforme dépend de la gestion centralisée et de la synchronisation axée sur les événements, combinant des notifications API / WebHook et des files d'attente de messages pour assurer une transmission fiable de données; 3. Le mécanisme d'alarme doit définir un faible inventaire, un inventaire zéro / négatif, des ventes invidables, des cycles de réapprovisionnement et des stratégies de fluctuations anormales dans différents scénarios, et sélectionner Dingtalk, SMS ou les personnes responsables par e-mail en fonction de l'urgence, et les informations d'alarme doivent être complètes et claires pour réaliser l'adaptation et la réponse rapide.

Au-delà de la pile de lampe: le r?le de PHP dans l'architecture d'entreprise moderne Au-delà de la pile de lampe: le r?le de PHP dans l'architecture d'entreprise moderne Jul 27, 2025 am 04:31 AM

PhpisstillRelevantinmodernerterpriseenvironments.1.modernPhp (7.xand8.x) offre des performances, des stricts, un jitcompilation, et modernsyntax, rendant la main

PHP Integrated AI Vorthing Reconnaissance et traducteur PHP Rendre Record Generation Solution de génération automatique PHP Integrated AI Vorthing Reconnaissance et traducteur PHP Rendre Record Generation Solution de génération automatique Jul 25, 2025 pm 07:06 PM

Sélectionnez le service de reconnaissance vocale AI approprié et intégrez PHPSDK; 2. Utilisez PHP pour appeler FFMPEG pour convertir les enregistrements en formats requis API (tels que WAV); 3. Téléchargez des fichiers sur le stockage cloud et appelez API Asynchronous Recognition; 4. Analyser les résultats JSON et organiser du texte à l'aide de la technologie NLP; 5. Générez des documents Word ou Markdown pour terminer l'automatisation des enregistrements de la réunion. L'ensemble du processus doit assurer le chiffrement des données, le contr?le d'accès et la conformité pour garantir la confidentialité et la sécurité.

See all articles