ホームページ >PHPフレームワーク >Laravel >Laravelで「バッチ割り当てを無効にする」機能を有効にする方法

Laravelで「バッチ割り当てを無効にする」機能を有効にする方法

PHPz
PHPzオリジナル
2023-04-09 00:30:02667ブラウズ

Laravel フレームワークでは、非バッチ割り当ては重要なセキュリティ機能であり、悪意のあるユーザーによるデータベース データの改ざんを防ぐのに役立ちます。ただし、この機能の用途が不明瞭な場合があり、多くのプログラマーの間で混乱を引き起こしています。

バッチ割り当て中、プログラマは作成メソッドまたは更新メソッドを通じてフォーム データをデータベースに直接保存します。検証が行われない場合、ハッカー攻撃やインジェクションなどの重大な脅威により大きなリスクが発生します。この問題を解決するために、Laravel はバッチ割り当てを無効にする機能を導入しました。

非バッチ割り当てとは、作成または更新メソッドを使用するときに、保存が許可されているフィールドが指定されていない場合、プログラムが自動的にすべての不正なフィールドを除外することを意味します。この機能はプログラムのセキュリティを向上させるだけでなく、プログラマーに対する開発上の制約も強化します。つまり、明示的に許可されたフィールドのみがデータベースに保存されます。

この機能は、非常に単純なコード行で有効にすることができます。バッチ割り当てを禁止する必要があるモデルでは $guarded 属性を使用します。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $guarded = [];
}

この例では、$guarded プロパティは空の配列です。これは、すべてのフィールドが編集可能であることを意味します。

特定のフィールドのみの保存を許可する場合は、編集が許可されていないすべてのフィールドを含む配列に $guarded 属性を設定するか、$fillable 属性を使用します。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $fillable = [&#39;name&#39;, &#39;email&#39;, &#39;password&#39;];
}

より良い方法は、コントローラーでデータ検証を実行し、検証後にデータをデータベースに保存することです。これにより、誤操作や安全性の問題を回避できます。

<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'name' => 'required|string',
            'email' => 'required|email|unique:users',
            'password' => 'required|confirmed',
        ]);

        $user = User::create($validatedData);

        return back()->with('success', 'User created successfully.');
    }
}

すべての入力フィールドは、ここで validate メソッドによって検証されます。検証が成功すると、データベースに保存されます。上記のコードは安全性が高いだけでなく、非常にエレガントでもあります。

一般に、Laravel の非バッチ割り当ては、プログラムのセキュリティを効果的に向上できる完璧なメカニズムです。開発における不要なリスクを避けるために、この機能を可能な限り活用する必要があります。

以上がLaravelで「バッチ割り当てを無効にする」機能を有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。