На клиенте перед отправкой на сервер отсекаю практически всё за исключением русского, украинского и белорусского шрифтов. Делаю это в первую очередь чтобы пользователь сразу понимал, какие символы он ввести не может.
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
, после чего строку вновь преобразовать в объект при чтении уже нельзя.
Я вижу несколько вариантов решения:
\"
.Прошу совета, как лучше поступить в этой ситуации.
Не могу установить и настроить сервер для php, до этого учил djangoТам все просто установил Python , запустил venvironment и работаешь спокойно
spl_autoload_register — Регистрирует заданную функцию в качестве реализации метода __autoload()
Есть скрипт загрузки изображения на phpПроблема в том, что при указании пути к директории загрузки в таком виде: $upload_dir = 'C:\server\openserver\domains\elektra
ПриветствуюКaким обрaзом узнaть значeние пользователя в БД через PHP, чтобы поставить условие - если значение пользователя в бд равно 'open' то открыть...