- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Собственно вопрос:
Имеются данные, которые собираются в браузере с помощью JS в виде огромного JSON.
Нужно сохранить эти данные в MySQL.
JSON очень большой - иногда занимает до 300-400 Килобайт, в день нужно сохранять больше 1К таких фрагментов.
Пообщался с знакомым программистом - он говорит, что нужно с помощью js передавать данные в php скрипт, который эти данные уже будет записывать в базу.
Но у меня большие сомнения по поводу такого метода. Ведь по идее можно подделать JS и сгенерировать JSON с вредоносным кодом. B php скрипт добавит его в базу.
У меня паранойя или это возможно? Если можно добавить - может ли злоумышленник каким то образом его запустить в БД?
Еще вопрос - так как размер данных очень большой - сколько можно грузить в базу без проблем? Можно будет ли работать с БД если ее размер будет 5-10 Гигов? Не будет ли тормозить в будущем при попытке импорта данных?
Ну так в пхп принято перед сохранением в базу данные обрабатывать, чтоб там небыло ничего лишнего и вредоносного. Программисты такое должны уметь.
foxi, можно в теории что конкретно нужно делать? Проверять на вставку вредоносного кода? Как?
можно в теории что конкретно нужно делать? Проверять на вставку вредоносного кода? Как?
Слишком не точный вопрос. Что конкретно делать зависит от того как эти данные будут использоваться.
Если хотите понять что к чему то вперед https://daglab.ru/learning/ataka-i-zashhita-veb-sajtov-specialist-po-it-bezopasnosti/
Или нанять программиста, он знает как.
Все просто - вы же знаете какие данные формирует ваш JS на фронтенде?
Обычно это какой-то набор цифробукв - вот на него и проверйте
То-есть Json декодируем в массив и идем по элементам проверяя/приводя тип и прочее, а затем уже в БД добавляем
Слишком не точный вопро
а мне и не нужен точный ответ. мне нужна теория.
Пока мысли
1) Проверять целостность JSON.
2) Проверять код переменных на возможный вредоносный код (кажется бредом, так как может быть 10К вариаций кода, а тем более закодированного).
нанять программиста
Прежде чем его нанимать нужно ТЗ. И вот я как раз и пытаюсь понять что необходимо.
Прежде чем его нанимать нужно ТЗ. И вот я как раз и пытаюсь понять что необходимо.
Выше написали же. Дать задание, какие данные следует записать в БД, – то есть дать описание каждого объекта, содержащегося в JSON. Какова структура объектов, какой формат у их свойств.
Если можно добавить - может ли злоумышленник каким то образом его запустить в БД?
Перед сохранением в базу данные экранируются их даже можно не проверять. Решить как экранировать - это задача программиста и он должен знать как это сделать, это также зависит от инструментов, которые он использует в данном приложении, pdo-функциии, какие-то классы для работы с базой, ORM, AR и т.д.
Если программист не знает как это сделать, то такой программист вам не нужен.
p.s. Может быть проверка на этапе вывода из базы и обработки, но на этапе записи в БД - читаем выше.
Перед сохранением в базу данные экранируются их даже можно не проверять.
Есть два основных подхода:
1. Проверка перед записью в базу. Т.е. в базе хранятся только валидные данные.
2. Проверка перед выводом. Т.е. в базе хранится что попало, которое чистится перед подачей.
Я лично в большинстве случаев за первый (второй имеет право на жизнь для определённых задач). И ИМХО ТСу как раз так и надо. Хотя бы уже потому, что данных много и раздувать базу лишним не стоит.
Но и второе стоит использовать как дополнительные мероприятия.
SeVlad, как раз ваш вариант очень редкий и может быть использован с сильными оговорками. Мы не знаем как нам в дальнейшем придётся обрабатывать данные.
В случае какого-то простенького хоумпейджа - это не важно, но для какого-то более-менее сложного проекта этот подход не годится.
И здесь не вопрос именно валидации данных в форме, тут могут свои проверки, а в дополнительной обработке уже полученных данных перед сохранением в базу (кроме средств по типу pdo_). Данные могут хранится одновременно в нескольких базах и мигрировать между ними по ряду условий.
А что, нельзя перед записью прогнать в PHP через strip_tags и htmlspecialchars, например?
Даже если оно потом в базу попадет, это же будет текст. А не код.
У вас же целый скрипт! Прогоните хоть 100 проверок.
Проверьте реферрер (чтобы обязательно был домен и страница).
Проверьте куки. Их можно прямо скриптом и ставить.
Добавьте в куки дату. Проверьте ее актуальность (допустим, не позднее суток и не раньше текущего времени).
Проверьте на ошибки. Можно даже разобрать все через json_decode (сам не пробовал) и проверить все куски. И записать все отдельно. Проверив обязательные поля.
Защитите от подделки, например, какой-то своей Хеш-функцией или кодом.
Уверен, на 99,9% этого хватит. С остальным справится strip_tags и htmlspecialchars :)