Когда админ отдыхает или, даже, находится на сайте, он и не догадывается, что его воблочку круглые сутки грызут десятки хрумеров от злоумышленников.
Не, конечно, среди админов есть продвинутые, которые догадываются о том, что сайт соседа пал от рук злоумышленника. Но, так это тот сайт, а у сайта админа движок «Вобла» - хрен возьмёшь хрумером.
Для остальных админов эта тема о том, как минимизировать или, даже, полностью исключить вред от XSS атак на сайт. Суть способа защиты сайта от XSS атак, описание которого находится ниже, состоит в том, чтобы в строке запроса динамического URL разрешить использование только переменных сайта.
В начале необходимо определиться, где находятся файлы форума. Как правило, они находятся в каталоге forum, а в корне сайта будет находиться индексный файл с динамическим URL (index.php).
Открываем файл .htaccess, который находится в корне сайта, если файл отсутствует, то его нужно будет создать. В файле .htaccess создаём правило. В случае с индексным файлом в корне сайта возможны два варианта:
1) В URL есть только название файла (
как здесь).
HTML Code:
## XSS attack
RewriteEngine on
RewriteBase /~quux/
RewriteCond %{QUERY_STRING} ^([A-Za-z0-9]+)(.*)$
RewriteRule (.*) / [F]
Эта правило означает, что, если в адресе будет присутствовать знак «?», после которого будет строка из любого сочетания букв и цифр, то сервер выдаст ошибку 403.
2) В URL присутствует строка запроса, которая состоит из переменных, положим, «langid» и «styleid»
HTML Code:
## XSS attack
RewriteEngine on
RewriteBase /~quux/
RewriteCond %{QUERY_STRING} !^ (styleid|langid) =([0-9]+)$
RewriteCond %{QUERY_STRING} !^styleid=([0-9]+)&langid=([0-9]+)$
RewriteCond %{QUERY_STRING} ^([A-Za-z0-9]+)(.*)$
RewriteRule (.*) / [F]
Эта правило означает, что в случае отсутствия переменных «langid, styleid» с любым цифровым значением в строке запроса и при наличии последней, сервер выдаст ошибку 403.
В случае, если на сайте присутствуют оба варианта для индексного файла, то в файл .htaccess достаточно сделать запись со вторым правилом.
Поскольку, как правило, запросы злоумышленников иду от корня сайта, то можно считать, что ваш сайт уже защищён от XCC атак.
Тем не менее, нельзя исключить возможность, когда запрос злоумышленника будет сформирован в каталоге forum.
Открываем файл .htaccess, который находится в каталоге forum, если файл отсутствует, то его нужно будет создать. В файле .htaccess создаём правило.
HTML Code:
## XSS attack
RewriteEngine on
RewriteBase /~quux/
RewriteCond %{QUERY_STRING} !^(do|order)=([a-z&]+)(.*)$
RewriteCond %{QUERY_STRING} !^(p|t|f)=([0-9]+)(.*)$
RewriteCond %{QUERY_STRING} ^([A-Za-z0-9]+)(.*)$
RewriteRule (.*) / [F]
Эта правило означает, что в случае отсутствия переменных «p, t, f, do” в начале строки запроса и при наличии последней, сервер выдаст ошибку 403.
Если на вашем сайте имеются другие переменные, то создайте своё правило по образу и подобию приведённому выше.