2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel --マスアサインメント脆弱性--

Posted at

マスアサインメント脆弱性

マスアサインメント脆弱性(Mass Assignment Vulnerability)は、Laravelなどのフレームワークでよく見られるセキュリティ上の問題の一つです。この脆弱性は、ユーザーからのリクエストデータを直接モデルに割り当てる際に発生します。通常、ユーザーがリクエストに含めたいくつかのフィールドだけを許可するために、fillableguarded などのプロパティを使用しますが、これらを正しく設定せずにモデルにデータを割り当てると、意図しないフィールドへの書き込みが行われる可能性があります。

例えば、以下のようなユーザーモデルがあるとします:

class User extends Model
{
    protected $fillable = ['name', 'email'];
} 

$fillableプロパティには、nameemailフィールドのみが許可されており、roleフィールドは含まれていません。したがって、ユーザーのリクエストデータにroleフィールドが含まれる場合、マスアサインメントの脆弱性が発生します。これを防ぐためには、適切なフィールドだけを$fillableに指定する必要があります。以下のようにroleフィールドを追加すると、正しく設定されます:

phpCopy code
class User extends Model
{
    protected $fillable = ['name', 'email', 'role'];
}

これにより、nameemail、およびroleフィールドのみがマスアサインメントを許可され、それ以外のフィールドには書き込みが行われなくなります。
なお、$fillableプロパティはモデルにマスアサインメントを許可する属性を指定し、一方、$guardedプロパティは、指定したフィールドをマスアサインメントから保護します。

つまり

protected $guarded = ['role'];

とするとroleは一括代入から保護され、マスアサインメントで変更されないようになります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?