Filament бере на себе багато перевірок, але не всі. Корисно чітко знати межу.
Що Filament робить сам:
- доступ до панелі - через
canAccessPanel()(на продакшені обов'язковий); - політики ресурсів -
viewAny,create,update,deleteперевіряються для сторінок і вбудованих дій; - приховані й вимкнені дії не можна викликати навіть підробленим запитом: дія, для якої
visible()повернувfalse, вважається вимкненою й не виконується на сервері; - вимкнені поля (
disabled()) не зберігаються, якщо явно не дозволитиsaved(); Selectза замовчуванням перевіряє, що обране значення є серед дозволених опцій;- HTML у
TextColumn/TextEntryзhtml()чиmarkdown()санітизується.
Що лишається на вас:
- власний Blade. Якщо виводите HTML з
RichEditorу своєму шаблоні - санітизуйте (str($html)->sanitizeHtml()) або використовуйтеRichContentRenderer. Санітайзер Filament пропускає атрибутиstyle, тож для недовіреного вмісту може знадобитися суворіший; - імпорт і експорт не перевіряють політики для кожного запису. Користувач з доступом до експорту отримає все, що поверне запит, - обмежуйте його через
modifyQueryUsing(); - фільтри списків - не межа безпеки. Звуження опцій у модальній таблиці (
tableSelect) лише відображення; дозволені записи задають запитом на кшталтrecordSelectOptionsQuery(); unique()не враховує глобальні скоупи й тенантів - для мультиорендних даних єscopedUnique();- файли.
preserveFilenames()на дискахlocal/publicвідкриває шлях до завантаження виконуваних файлів - краще випадкові імена йstoreFileNamesIn(); - CSV-формули. Значення, що починаються з
=,+,-,@, у файлах експорту чи «невдалих рядків» імпорту Excel може виконати як формулу.
Окремий нюанс - middleware. Панель збирає власний стек middleware і не використовує групу web застосунку. Middleware, додане в web (наприклад, заголовки CSP), на маршрутах панелі не спрацює - його треба реєструвати в $panel->middleware([...]).
Практичний підсумок: політика на кожну модель ресурсу, canAccessPanel() з перевіркою конкретної панелі, і обережність скрізь, де дані виходять за межі панелі: свої шаблони, файли, експорт.