InsecureDeserialization
ユーザー入力に対して unserialize() が使用される場合に検出されます。
<?php
class SessionResource extends ResourceObject
{
public function onPost(string $data): static
{
// 脆弱: 安全でないデシリアライゼーション
$this->body['user'] = unserialize(base64_decode($data));
return $this;
}
}
修正方法
代わりにJSONを使用してください:
<?php
class SessionResource extends ResourceObject
{
public function onPost(string $data): static
{
// 安全: JSONを使用
$this->body['user'] = json_decode(base64_decode($data), true, 512, JSON_THROW_ON_ERROR);
return $this;
}
}
unserialize() が必要な場合は、allowed_classes オプションで許可するクラスを制限してください:
$data = unserialize($input, ['allowed_classes' => [User::class]]);