Предпазване от XSS и логване на атакуващия
Какво е XSS?
XSS е съкращение от Cross Site Scripting. Чудите се защо не е CSS? Еми защото CSS вече е запазено от Cascading Style Sheets.

Как работи XSS?
Това е начин за инжектиране на код в генериран HTML. Става с помоща на променливите предвани чрез метода GET или при нефилтрирано(непроверено) поле за специални символи, използвани в HTML. Основно XSS се използва за крадене на сесия или куки (coockie)

Как да се защитим от XSS
За да успеете да се предпазите от XSS атака, трябва да забраните тези символи:
< > ( ) { } + ! @ $ % * ..

Разбира се, ако вашата страница е само HTML няма нужда от притеснение, но ако използвате PHP следните редове ще ви помогнат не само да се предпазите, но и да логнете, кой е провел атаката.

В началото на вашите PHP страници вмъкнете този код:
/* начало на кода */
<?php
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i:s");
$lfh = "log.txt";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n");
fclose($log);
echo "Вашата атака беше записана!"; exit;
}
?>
/* Край на кода */

Така ще направите ввашия сайт по-защитен. За да видите кой и кога е атакувал, прегледайте лога си от:
[URL] на вашия сайт/log.txt
В последвствие може да използвате PHP скрипт, който да забрани достъпа до страницата на това IP, което е атакувало.






/ Трябва да сте регистриран за да напишете коментар /
От: WindowsXP
16:06 08-04-2010
Може вместо echo "Вашата атака беше записана!"; exit;
Да се използва die "Вашата атака беше записана!";
От: deam0n
19:25 08-04-2010
Да, то работи по аналогичен начин.
От: bunchevi
0:35 22-04-2010
Искам единствено да попитам дали това няма да е проблем ако го сложим на страница с валидация на полета, примерно за имейл трябва да има @. Ще направи ли проблем тогава?
От: deam0n
19:56 22-04-2010
Да
От: deam0n
19:56 22-04-2010
Просто махни "strstr($queryString,"@"))"
От: kikity_94
10:09 08-06-2010
А искам друго да попитам този лог файл сам ли се създава или аз трябва да си го създам
От: kikity_94
10:09 08-06-2010
А искам друго да попитам този лог файл сам ли се създава или аз трябва да си го създам
От: kikity_94
10:10 08-06-2010
А искам друго да попитам този лог файл сам ли се създава или аз трябва да си го създам
От: Angry
12:30 08-06-2010
kikity_94, твой избор е дали ти ще го създадеш или автоматично.
1