Viji
@Viji
DevOps Engineer

Если нарушитель может записать команду в поле таблицы SQL, означает ли это что он всегда сможет ее выполнить?

Есть обычная таблица базы, с полем скажем birth_place. На фронтэнде, как и на бэкэнде, в это поле можно зафигачить что угодно. Знаю, что это отсутствие валидации - это неправильно - но разве может это представлять какую-то опасность само по себе? Даже если там записано DELETE * from Table1? И если может, то как?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
В данном случае проблема JavaScript инъекции. Попробуйте вписать в базу бозобидное
<script>alert('WTF?!');</script>

SQL injection - ЭТО НЕ ВОЗМОЖНОСТЬ ЗАПИСАТЬ КОД В БАЗУ, А ВОЗМОЖНОСТЬ ИСПОЛНИТЬ КОД В БАЗЕ ДАННЫХ
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Jack444
Чтобы от SQL инъекции защитится в строчных полях достаточно заменить одиночные ковычки на две одиночные ковычки.
Например тебе в поле вписали DELETE * from Table1
Не обработано это полетит в базу как 'DELETE * from Table1' код не выполнится.
Но если отправить так Moskow'; DELETE * from Table1;
То сначала выполнится insert а после delete, в лучшем случае вылетит ошибка.
Но если принудительно одну ковычку реплейсить на две одиночные ковычки то этот весь запрос как строка запишется и нечего не произойдет
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Ты правильно тегировал тему с SQL-Injection. Но ее наличие надо доказать.
Например - взять и вставить какой-то код в ячейку и попробовать воспроизвести.
Одних страхов - недостаточно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы