Базовые принципы на то и базовые, что не меняются со временем. Я бы только переформулировал немного по-другому,
- Данные подставляем в запрос только через плейсхолдеры
- Все остальное - только после проверки через белые списки
И еще бы добавил что эти правила должны соблюдаться безусловно, в 100% процентов случаев, без рассуждений типа "вот эти данные у нас безопасны, их можно не защищать".
Если же говорить о тенденциях, то с чистым SQL сейчас никто практически не работает. 95% запросов выполняются через ORM. Т.е. вместо
$stmt = $pdo->prepare("SELECT * FROM user where id = ?");
$stmt->execute([$id]);
$user = $stmt->fetch();
пишем просто
$user = User::find($id);
при этом защита уже вшита у ORM внутри и думать о ней не надо
Ну а если надо сделать более сложный запрос, то опять же, есть развитые Квери билдеры, у которых защита также уже встроена. И только в редчайших случаях нужно писать чистый SQL, и только тогда нужно вспоминать про ручную защиту от инъекций.