Вопрос о php, js и mysql

Devvver
На сайте с 02.07.2008
Offline
617
2660

Собственно вопрос:

Имеются данные, которые собираются в браузере с помощью JS в виде огромного JSON.

Нужно сохранить эти данные в MySQL.

JSON очень большой - иногда занимает до 300-400 Килобайт, в день нужно сохранять больше 1К таких фрагментов.

Пообщался с знакомым программистом - он говорит, что нужно с помощью js передавать данные в php скрипт, который эти данные уже будет записывать в базу.

Но у меня большие сомнения по поводу такого метода. Ведь по идее можно подделать JS и сгенерировать JSON с вредоносным кодом. B php скрипт добавит его в базу.

У меня паранойя или это возможно? Если можно добавить - может ли злоумышленник каким то образом его запустить в БД?

Еще вопрос - так как размер данных очень большой - сколько можно грузить в базу без проблем? Можно будет ли работать с БД если ее размер будет 5-10 Гигов? Не будет ли тормозить в будущем при попытке импорта данных?

Мой блог. Все о создании сайтов,Seo и СДЛ (https://devvver.ru/) А вот это блог о жизни в Таиланде и Паттайе (http://tourwebring.com). Еще о Таиланде (https://tailand-gid.org).
foxi
На сайте с 02.03.2011
Offline
876
#1

Ну так в пхп принято перед сохранением в базу данные обрабатывать, чтоб там небыло ничего лишнего и вредоносного. Программисты такое должны уметь.

Антибот защита для сайта (https://antibot.cloud/ru.html#searchengines) (защита от кражи контента и спама) | ВебМастерские микроблоги (https://wmsn.biz/#searchengines) | Фокси SEO форум (https://foxi.biz/#searchengines)
Devvver
На сайте с 02.07.2008
Offline
617
#2

foxi, можно в теории что конкретно нужно делать? Проверять на вставку вредоносного кода? Как?

SS
На сайте с 15.12.2015
Offline
56
#3
Devvver:
можно в теории что конкретно нужно делать? Проверять на вставку вредоносного кода? Как?

Слишком не точный вопрос. Что конкретно делать зависит от того как эти данные будут использоваться.

Если хотите понять что к чему то вперед https://daglab.ru/learning/ataka-i-zashhita-veb-sajtov-specialist-po-it-bezopasnosti/

Или нанять программиста, он знает как.

Размещение естественных ссылок на тематических порталах, отзовиках, справочниках (/ru/forum/1013919)
AlexVenga
На сайте с 10.04.2007
Offline
183
#4

Все просто - вы же знаете какие данные формирует ваш JS на фронтенде?

Обычно это какой-то набор цифробукв - вот на него и проверйте

То-есть Json декодируем в массив и идем по элементам проверяя/приводя тип и прочее, а затем уже в БД добавляем

Антикризисное предложение: [Бурж, AdSense] [NEW] Сайты - каталоги компаний с гарантией трафа [Дорого] (/ru/forum/1006462)
Devvver
На сайте с 02.07.2008
Offline
617
#5
SERM-service:
Слишком не точный вопро

а мне и не нужен точный ответ. мне нужна теория.

Пока мысли

1) Проверять целостность JSON.

2) Проверять код переменных на возможный вредоносный код (кажется бредом, так как может быть 10К вариаций кода, а тем более закодированного).

SERM-service:
нанять программиста

Прежде чем его нанимать нужно ТЗ. И вот я как раз и пытаюсь понять что необходимо.

S
На сайте с 30.09.2016
Offline
459
#6
Devvver:
Прежде чем его нанимать нужно ТЗ. И вот я как раз и пытаюсь понять что необходимо.

Выше написали же. Дать задание, какие данные следует записать в БД, – то есть дать описание каждого объекта, содержащегося в JSON. Какова структура объектов, какой формат у их свойств.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Dreammaker
На сайте с 20.04.2006
Offline
551
#7
Devvver:
Если можно добавить - может ли злоумышленник каким то образом его запустить в БД?

Перед сохранением в базу данные экранируются их даже можно не проверять. Решить как экранировать - это задача программиста и он должен знать как это сделать, это также зависит от инструментов, которые он использует в данном приложении, pdo-функциии, какие-то классы для работы с базой, ORM, AR и т.д.

Если программист не знает как это сделать, то такой программист вам не нужен.

p.s. Может быть проверка на этапе вывода из базы и обработки, но на этапе записи в БД - читаем выше.

SV
На сайте с 03.11.2008
Offline
1381
#8
Dreammaker:
Перед сохранением в базу данные экранируются их даже можно не проверять.

Есть два основных подхода:

1. Проверка перед записью в базу. Т.е. в базе хранятся только валидные данные.

2. Проверка перед выводом. Т.е. в базе хранится что попало, которое чистится перед подачей.

Я лично в большинстве случаев за первый (второй имеет право на жизнь для определённых задач). И ИМХО ТСу как раз так и надо. Хотя бы уже потому, что данных много и раздувать базу лишним не стоит.

Но и второе стоит использовать как дополнительные мероприятия.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Топики помощи с ⓌordPress (https://searchengines.guru/ru/forum/1032910 ) и основы безопасности сайтов ( https://searchengines.guru/ru/forum/774117 ). *** Помощь\консультации в топиках форума - БЕСПЛАТНО. Платные услуги ( https://wp.me/P3YHjQ-3 ) - с бюджетом от 150$ ***
Dreammaker
На сайте с 20.04.2006
Offline
551
#9

SeVlad, как раз ваш вариант очень редкий и может быть использован с сильными оговорками. Мы не знаем как нам в дальнейшем придётся обрабатывать данные.

В случае какого-то простенького хоумпейджа - это не важно, но для какого-то более-менее сложного проекта этот подход не годится.

И здесь не вопрос именно валидации данных в форме, тут могут свои проверки, а в дополнительной обработке уже полученных данных перед сохранением в базу (кроме средств по типу pdo_). Данные могут хранится одновременно в нескольких базах и мигрировать между ними по ряду условий.

D.iK.iJ
На сайте с 26.05.2013
Offline
177
#10

А что, нельзя перед записью прогнать в PHP через strip_tags и htmlspecialchars, например?

Даже если оно потом в базу попадет, это же будет текст. А не код.

У вас же целый скрипт! Прогоните хоть 100 проверок.

Проверьте реферрер (чтобы обязательно был домен и страница).

Проверьте куки. Их можно прямо скриптом и ставить.

Добавьте в куки дату. Проверьте ее актуальность (допустим, не позднее суток и не раньше текущего времени).

Проверьте на ошибки. Можно даже разобрать все через json_decode (сам не пробовал) и проверить все куски. И записать все отдельно. Проверив обязательные поля.

Защитите от подделки, например, какой-то своей Хеш-функцией или кодом.

Уверен, на 99,9% этого хватит. С остальным справится strip_tags и htmlspecialchars :)

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).

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