Heim  >  Artikel  >  PHP-Framework  >  So aktivieren Sie die Funktion „Stapelzuweisung deaktivieren“ in Laravel

So aktivieren Sie die Funktion „Stapelzuweisung deaktivieren“ in Laravel

PHPz
PHPzOriginal
2023-04-09 00:30:02596Durchsuche

Im Laravel-Framework ist die Nicht-Batch-Zuweisung eine wichtige Sicherheitsfunktion, die dazu beiträgt, zu verhindern, dass böswillige Benutzer Datenbankdaten manipulieren. Allerdings hat diese Funktion manchmal unklare Verwendungsmöglichkeiten, was bei vielen Programmierern zu Verwirrung führt.

Während der Stapelzuweisung speichert der Programmierer die Formulardaten über die Methode „Erstellen“ oder „Aktualisieren“ direkt in der Datenbank. Erfolgt keine Verifizierung, drohen große Risiken durch schwerwiegende Bedrohungen wie Hackerangriffe und Einschleusungen. Um dieses Problem zu lösen, hat Laravel eine Funktion eingeführt, die die Stapelzuweisung deaktiviert.

Eine Stapelzuweisung ist nicht möglich. Das bedeutet, dass das Programm bei Verwendung der Erstellungs- oder Aktualisierungsmethode automatisch alle ungültigen Felder herausfiltert, wenn keine zum Speichern zulässigen Felder angegeben sind. Diese Funktion verbessert nicht nur die Sicherheit des Programms, sondern verschärft auch die Entwicklungsbeschränkungen für Programmierer: Nur explizit erlaubte Felder können in der Datenbank gespeichert werden.

Diese Funktion kann mit einer sehr einfachen Codezeile aktiviert werden. Verwenden Sie das Attribut $guarded in Modellen, die eine Stapelzuweisung verhindern müssen.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Im Beispiel ist die Eigenschaft $guarded ein leeres Array, was bedeutet, dass alle Felder bearbeitet werden können.

Wenn Sie nur das Speichern bestimmter Felder zulassen möchten, können Sie das Attribut $guarded auf ein Array setzen, das alle Felder enthält, die nicht bearbeitet werden dürfen, oder das Attribut $fillable verwenden.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

Ein besserer Ansatz besteht darin, die Datenvalidierung im Controller durchzuführen und sie nach der Validierung in der Datenbank zu speichern. Dadurch können einige Fehlbedienungen und Sicherheitsprobleme vermieden werden.

<?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.');
    }
}

Alle Eingabefelder werden hier durch die Validierungsmethode überprüft. Wenn die Überprüfung erfolgreich ist, wird sie in der Datenbank gespeichert. Der obige Code ist nicht nur sehr sicher, sondern auch sehr elegant.

Im Allgemeinen ist die Nicht-Batch-Zuweisung von Laravel ein perfekter Mechanismus, der die Sicherheit des Programms effektiv verbessern kann. Wir sollten diese Funktion so weit wie möglich nutzen, um unnötige Risiken in der Entwicklung zu vermeiden.

Das obige ist der detaillierte Inhalt vonSo aktivieren Sie die Funktion „Stapelzuweisung deaktivieren“ in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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