@Dreaded

Что почитать по составлению безопасных sql запросов?

Нашел довольно таки интересную статью на хабре по защите от SQL инъекций . Всё бы ничего, но статья написана пять с половиной лет назад. Мне как человеку который совсем недавно начал изучать PHP и SQL сложно оценить актуальность написанного, но есть подозрение, что за это время много чего поменялось.
Собственно говоря вопрос: может быть есть нечто похожее, но написанное с поправкой на новые версии и вообще актуальные тенденции? Оговорюсь, что хотелось бы найти материал похожий по стилистике и смысловому наполнению на приведенную мной статью. Ну то есть без всяких многочасовых видеокурсов и огромных книг.
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Vasiliy_M
Там все актуально до сих пор. Написанное было актуально лет 10 назад, актуально будет еще долго. Принципы те же самые. Ничего не изменилось. Автор той статьи - очень авторитетный товарищ и на этой теме "собаку съел". Он многих "учил" в онлайне еще тогда, когда 95% населения тостера под стол пешком ходили. Вот кстати его сайт еще - phpfaq.ru с очень ценной информацией.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Базовые принципы на то и базовые, что не меняются со временем. Я бы только переформулировал немного по-другому,
  • Данные подставляем в запрос только через плейсхолдеры
  • Все остальное - только после проверки через белые списки

И еще бы добавил что эти правила должны соблюдаться безусловно, в 100% процентов случаев, без рассуждений типа "вот эти данные у нас безопасны, их можно не защищать".

Если же говорить о тенденциях, то с чистым SQL сейчас никто практически не работает. 95% запросов выполняются через ORM. Т.е. вместо
$stmt = $pdo->prepare("SELECT * FROM user where id = ?");
$stmt->execute([$id]);
$user = $stmt->fetch();

пишем просто
$user = User::find($id);
при этом защита уже вшита у ORM внутри и думать о ней не надо

Ну а если надо сделать более сложный запрос, то опять же, есть развитые Квери билдеры, у которых защита также уже встроена. И только в редчайших случаях нужно писать чистый SQL, и только тогда нужно вспоминать про ручную защиту от инъекций.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект