На клиенте перед отправкой на сервер отсекаю практически всё за исключением русского, украинского и белорусского шрифтов. Делаю это в первую очередь чтобы пользователь сразу понимал, какие символы он ввести не может.
data = data.replace(/[^\w\n\" а-яА-ЯёЁA-Za-zÀ-ÿёа-зй-шы-яЁА-ЗЙ-ШЫІіЎўа-щА-ЩЬьЮюЯяЇїІіЄєҐґ'-,.:!?@«»]/ig, '');
Обработанные строки заносятся в объект и преобразуются в строку:
obj = JSON.stringify(obj);
С целью защиты от XSS проверяю данные на сервере, при этом строка не разбирается перед записью в БД, но проверяется целиком:
$obj = preg_replace("/[^\w\"\n а-яА-ЯёЁA-Za-zÀ-ÿёа-зй-шы-яЁА-ЗЙ-ШЫІіЎўа-щА-ЩЬьЮюЯяЇїІіЄєҐґ',-.!?@{{}}:«»]/iu", "", $obj) ;
Проблема: если на клиенте в тексте встречаются двойные кавычки, они экранируются обратным слешем при JSON.stringify(obj)
, а уже на сервере обратный слеш отрезается при preg_replace
, после чего строку вновь преобразовать в объект при чтении уже нельзя.
Я вижу несколько вариантов решения:
\"
.Прошу совета, как лучше поступить в этой ситуации.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу установить и настроить сервер для php, до этого учил djangoТам все просто установил Python , запустил venvironment и работаешь спокойно
spl_autoload_register — Регистрирует заданную функцию в качестве реализации метода __autoload()
Есть скрипт загрузки изображения на phpПроблема в том, что при указании пути к директории загрузки в таком виде: $upload_dir = 'C:\server\openserver\domains\elektra
ПриветствуюКaким обрaзом узнaть значeние пользователя в БД через PHP, чтобы поставить условие - если значение пользователя в бд равно 'open' то открыть...