recherche
Maisoncadre phpLaravelUne brève analyse de la dernière vulnérabilité d'injection SQL dans le framework PHP Laravel

Laravel, le framework de développement PHP bien connu, a précédemment signalé une vulnérabilité d'injection SQL à haut risque sur le blog officiel. Voici une brève analyse.

Une brève analyse de la dernière vulnérabilité d'injection SQL dans le framework PHP Laravel

Tout d'abord, cette vulnérabilité appartient au codage irrégulier du site Web. Le responsable a donné un indice :

Une brève analyse de la dernière vulnérabilité dinjection SQL dans le framework PHP Laravel

Mais le responsable l'a quand même fait. Il a été corrigé et peut être corrigé en mettant à niveau vers la dernière version V5.8.7.

Localisons d'abord ici :

Illuminate\Validation\Rule

La méthode d'écriture officiellement recommandée est :

Rule::unique('users')->ignore($id),

Si le codage du site Web ne traite pas la valeur de $id à l'avance, l'utilisateur peut transmettez-le directement Donner des données malveillantes à la fonction ignore provoquera une injection SQL.

Suivons la fonction :

\Illuminate\Validation\Rules\Unique.php class Unique {
... public function ignore($id, $idColumn = null) { if ($id instanceof Model) { return $this->ignoreModel($id, $idColumn);
        } $this->ignore = $id; $this->idColumn = $idColumn ?? 'id'; return $this;
    }

Ici nous n'envisageons pas d'écrire $id comme une instance Si $id est contrôlable par l'utilisateur, $idColumn peut être écrit directement comme vide, et enfin. attribué La situation est la suivante :

$this->ignore = $id; $this->idColumn = 'id';

Si le code du site Web est structuré ainsi, la valeur saisie par le hacker est contrôlable :

$id = $request->input('id');

Enfin, nous arriverons ici :

Illuminate\Validation\Rules\Unique.php public function __toString() {
        ...
        ...
    }

Nous examinons les modifications du code clé :

Illuminate\Validation\Rules\Unique.php
V5.8.7【最新版】 public function __toString() { $this->ignore ? '"'.addslashes($this->ignore).'"' : 'NULL',
    } 
Illuminate\Validation\Rules\Unique.php
V5.8.4 public function __toString() { $this->ignore ? '"'.$this->ignore.'"' : 'NULL',
    }

Le dernier code ici est la v5.8.7, qui donne directement $this->ignore aux addlashes. Il n'y avait aucune protection ici auparavant.

Ce qui est intéressant, c'est que l'auteur a comparé les diffs, au cours desquels le responsable a également essayé de filtrer d'autres lieux cités. Enfin, un filtrage unifié a été effectué sur __toString.

Enfin, le code suivant entrera dans DatabaseRule pour la correspondance ultérieure des règles SQL.

Illuminate\Validation\Rules\DatabaseRule.php

Il n'y a eu aucun autre traitement après cela et une injection SQL a été formée.

Pour plus d'articles techniques liés à Laravel, veuillez visiter la colonne

Tutoriel d'introduction au framework Laravel pour apprendre !

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
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Édition de documents collaboratifs: rationalisation du flux de travail dans les équipes distribuéesÉdition de documents collaboratifs: rationalisation du flux de travail dans les équipes distribuéesApr 27, 2025 am 12:21 AM

L'édition de documents collaborative est un outil efficace pour les équipes distribuées afin d'optimiser leurs workflows. Il améliore la communication et les progrès du projet grâce à des boucles de collaboration et de rétroaction en temps réel, et les outils communs incluent Google Docs, Microsoft Teams et Notion. Faites attention à des défis tels que le contrôle des versions et la courbe d'apprentissage lorsque vous l'utilisez.

Combien de temps la version Laravel précédente sera-t-elle prise en charge?Combien de temps la version Laravel précédente sera-t-elle prise en charge?Apr 27, 2025 am 12:17 AM

ThepreviousVersionofLaraveLissupported withbugfixesforsixmonthsandSecurityFixesForoneyEarfteranEwmaJorversion'srelease.Croite-compritsThisSupporttimelineScricialForPlanningUpgrades, assurant la mise en place de la stabilité et la mise en place des éléments et les économies de lamence, et la stabilité et la conduite de la rémunération et la santé

Tirer parti des fonctionnalités de Laravel pour le développement du frontend et du backendTirer parti des fonctionnalités de Laravel pour le développement du frontend et du backendApr 27, 2025 am 12:16 AM

LaravelCanBeefectively UsedForBothFronttendandBackendDevelopment.1) Backend: Utilizelaravel'SeloventormforsImpplifiedDatabaseInteractions.2) Frontend: LefetherBlatemplateForCleanhtmland Integratevue.jsfordynamicsPas, STANDSEANSHEST-BACKENDINTEG.

Laravel peut-il être utilisé pour le développement complet de la pile (backend frontend)?Laravel peut-il être utilisé pour le développement complet de la pile (backend frontend)?Apr 27, 2025 am 12:10 AM

LaravelCanBeusedFullLStackDevelopment.1) BackendmasteryWithLaravel'SexpressivesYntaxAndFeaturesLILLICYELOQUENTormfordatabasemanagement.2)

Quels outils aident à la mise à niveau vers la dernière version de Laravel?Quels outils aident à la mise à niveau vers la dernière version de Laravel?Apr 27, 2025 am 12:02 AM

Réponse: Les meilleurs outils pour la mise à niveau de Laravel incluent le guide de mise à niveau de Laravel, Laravelshift, Rector, Composer et Laravelpint. 1. Utilisez le guide de mise à niveau de Laravel comme feuille de route de mise à niveau. 2. Utilisez Laravelshift pour automatiser la plupart des travaux de mise à niveau, mais cela nécessite un examen manuel. 3. Refacteur automatiquement le code via le recteur, et vous devez comprendre et éventuellement personnaliser ses règles. 4. Utilisez le compositeur pour gérer les dépendances et faire attention aux éventuels conflits de dépendance. 5. Exécutez Laravelpint pour maintenir la cohérence du style de code, mais il ne résout pas les problèmes fonctionnels.

Au-delà de l'appel de zoom: stratégies créatives pour connecter les équipes distribuéesAu-delà de l'appel de zoom: stratégies créatives pour connecter les équipes distribuéesApr 26, 2025 am 12:24 AM

ToenhanceengagementAndCoheSionAmongDstributedTeamsBeyondzoom, implémentations de typeStrates: 1) OrganizeVirtualCoffeebreaksForInformalChats, 2) usEasynchronousToolSlikeslackFornon-Workdissions, 3) IntrodugamificationwithTeamGamesorChallengs, and4) encourage

Quels sont les changements de rupture dans la dernière version de Laravel?Quels sont les changements de rupture dans la dernière version de Laravel?Apr 26, 2025 am 12:23 AM

Laravel10 introducesseveralBreakingChanges: 1) itRequiresphp8.1orHigher, 2) theRouserviceProviderNowUSESABOOTMethodForLoadingRoutes, 3) thewithetimestamps () MethodonEloventrelationShipSepresecated, and4) CLASSNOWPRES

Le paradoxe de la productivité: maintenir la concentration et la motivation dans des contextes éloignésLe paradoxe de la productivité: maintenir la concentration et la motivation dans des contextes éloignésApr 26, 2025 am 12:17 AM

TOMAINTAINFOCUSANDMOTIVATIONINREMOTEWork, CreateAstructuredenvironment, GestiondigitalDistractions, FosterMotivation ThroughsocialInteractions et legoalseting, maintien de la vie de vie et usureAppropriateTechnology.1) SetUpadediatedWorkspace andstickToaroutine.

See all articles

Outils d'IA chauds

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.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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 grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

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

mPDF

mPDF

mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) ​​et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),