ホームページ > PHPフレームワーク > Laravel > PHP フレームワーク Laravel の最新の SQL インジェクション脆弱性の簡単な分析

PHP フレームワーク Laravel の最新の SQL インジェクション脆弱性の簡単な分析

藏色散人
リリース: 2019-10-02 17:51:44
転載
3865 人が閲覧しました

有名な PHP 開発フレームワークである Laravel は、高リスクの SQL インジェクションの脆弱性を公式ブログで以前に報告しました。

PHP フレームワーク Laravel の最新の SQL インジェクション脆弱性の簡単な分析

#第一に、この脆弱性は Web サイトの不規則なコーディングに起因します。担当者は次のヒントを提供しました:

PHP フレームワーク Laravel の最新の SQL インジェクション脆弱性の簡単な分析

でも公式はやりました パッチが適用されており、最新バージョン V5.8.7 にアップグレードすることで修正できます。

まずここを見つけましょう:

Illuminate\Validation\Rule
ログイン後にコピー

公式に推奨される記述方法は次のとおりです:

Rule::unique('users')->ignore($id),
ログイン後にコピー

Web サイトのコーディングが事前に $id の値を処理しない場合、ユーザーは直接渡す 無視関数に悪意のあるデータを与えると、SQL インジェクションが発生します。

関数に従ってみましょう:

\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;
    }
ログイン後にコピー

ここでは、$id をインスタンスとして記述することは考慮しません。$id がユーザー制御可能な場合、$idColumn は空として直接記述し、最終的に割り当てることができます。状況は次のとおりです。

$this->ignore = $id; $this->idColumn = 'id';
ログイン後にコピー

Web サイトのコードが次のように構成されている場合、ハッカーが入力した値は制御可能です:

$id = $request->input('id');
ログイン後にコピー

最終的にここに到達します:

Illuminate\Validation\Rules\Unique.php public function __toString() {
        ...
        ...
    }
ログイン後にコピー

主なコードの変更点を見てみましょう:

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',
    }
ログイン後にコピー

ここの最新のコードは v5.8.7 で、$this->ignore をaddslashes に直接与えます。以前はここに保護はありませんでした。

興味深いのは、著者が差分を比較し、その間に関係者が他の引用箇所をフィルタリングしようとしたことです。最後に、__toString で統合フィルタリングが実行されました。

最後に、次のコードは、後続の SQL ルールの照合のために DatabaseRule を入力します。

Illuminate\Validation\Rules\DatabaseRule.php
ログイン後にコピー

これ以降は特に処理はなく、SQLインジェクションが形成されました。

Laravel 関連の技術記事の詳細については、

Laravel Framework Getting Started Tutorial 列にアクセスして学習してください。

以上がPHP フレームワーク Laravel の最新の SQL インジェクション脆弱性の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:freebuf.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート