Фильрация данных в sql запросе

UL
На сайте с 04.08.2013
Offline
68
1249

Подскажите пжл какими средствами нонче пользуются для фильтрации данных в sql запросе? Например filter_var() достаточно будет?

mysql_escape_string() как я понимаю уже неактуален?

Ну и м.б. от XSS стандартные функции есть? htmlspecialchars() тоже походу уже на помойку выкинули?

SocFishing
На сайте с 26.09.2013
Offline
118
#1

Гуглить не пробовали?

PHP filter xss

https://github.com/voku/anti-xss

и тд. для любителей ковырять с нуля.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
M
На сайте с 04.12.2013
Offline
223
#2

use_linux, все три упомянутые вами ф-ции нужны для совершенно разных вещей ;)

На помойку выкинули mysql_escape_string() и то только потому, что ей на смену пришла mysqli_escape_string() ;)

---------- Добавлено 10.03.2019 в 12:31 ----------

P.S. Конкретно от SQL-инъекций спасает mysqli_escape_string(), но только в умелых руках :)

---------- Добавлено 10.03.2019 в 12:34 ----------

P.P.S. Но если значения предварительно проверены на предмет отсутствия «разрушающих запрос» символов/очищены от таких символов, то и эта ф-ция не нужна.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
UL
На сайте с 04.08.2013
Offline
68
#3
miketomlin:
use_linux, все три упомянутые вами ф-ции нужны для совершенно разных вещей ;)

На помойку выкинули mysql_escape_string() и то только потому, что ей на смену пришла mysqli_escape_string() ;)

---------- Добавлено 10.03.2019 в 12:31 ----------

P.S. Конкретно от SQL-инъекций спасает mysqli_escape_string(), но только в умелых руках :)

---------- Добавлено 10.03.2019 в 12:34 ----------

P.P.S. Но если значения предварительно проверены на предмет отсутствия «разрушающих запрос» символов/очищены от таких символов, то и эта ф-ция не нужна.

Вот у меня и возник такой вопрос: типа как стандартными средствами такую работу проделать, чтобы заново не изобретать велосипед)

SocFishing:
Гуглить не пробовали?

PHP filter xss
https://github.com/voku/anti-xss
и тд. для любителей ковырять с нуля.

Гуглить пробовал, только не долго :-) Я просто пытался понять не появилось ли что-нибудь новое. А то видите ли отстал немного (думал, что отстал) от времени. Спс за инфу.

S
На сайте с 23.05.2004
Offline
316
#4

Новое - это использование ORM, где все будет придумано за тебя.

В остальном по прежнему bind/prepare и своя обертка над этим.

Это просто подпись.
UL
На сайте с 04.08.2013
Offline
68
#5

Stek, конечно не существует абсолютной безопасности, однако есть мнение, что метода prepare недостаточно, типа каждую переменную нужно фильтровать перед подготовкой запроса (что раньше и делал).

S
На сайте с 23.05.2004
Offline
316
#6
use_linux:
однако есть мнение, что метода prepare недостаточно, типа каждую переменную нужно фильтровать перед подготовкой запроса

Так это тоже самое фактически, только более правильный вариант. Главное учитывать, что ты должен работать с чистыми переменными, не прошедшими всякого рода экранировки.

D
На сайте с 30.09.2018
Offline
31
#7
miketomlin:


P.S. Конкретно от SQL-инъекций спасает mysqli_escape_string(), но только в умелых руках :)

Конкретно от инъекций уже давно есть прекрасный класс http://phpfaq.ru/safemysql

Сайт под ключ (https://devmastery.ru)
Aisamiery
На сайте с 12.04.2015
Online
293
#8
devmastery:
Конкретно от инъекций уже давно есть прекрасный класс http://phpfaq.ru/safemysql

в котором всё тот же mysqli_real_escape_string

лучше всего юзать PDO или идти дальше и брать орм, чтоб вообще не думать с чем ты там работаешь на том конце, иметь для простых запросов гибкие билдеры и на выходе иметь не массив полей, а конкретный класс модели с возможностью допилить свои гидраторы

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
D
На сайте с 30.09.2018
Offline
31
#9
Aisamiery:
лучше всего юзать PDO или идти дальше и брать орм,

Смотря для каких целей. Когда в модели только 2 с половиной селекта, то вполне себе хватит и данного класса. А для большего есть фреймворки.

Но так то согласен.

UL
На сайте с 04.08.2013
Offline
68
#10

Aisamiery, ВО-ВО! Через PDO соединяюсь. Спс за совет. Так, в этом случае prepare() достаточно будет? Наверняка этот метод должен включать в себя что-то наподобие mysqli_real_escape_string. Иначе смысл в PDO, если я могу сделать то же самое в ручную со всем необходимым функционалом?

---------- Добавлено 13.03.2019 в 04:29 ----------

Stek:
Так это тоже самое фактически, только более правильный вариант. Главное учитывать, что ты должен работать с чистыми переменными, не прошедшими всякого рода экранировки.

Stek, это я и хотел выяснить.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий