защита сайта от XSS атак

Статус
В этой теме нельзя размещать новые ответы.

AchiLLeSS

Мой дом здесь!
Регистрация
13 Дек 2006
Сообщения
848
Реакции
437
защита сайта от XSS атак.

Может есть какой нибудь скрипт от этой дряни ?
 
фильтруй входящие данные, к примеру пройдись по всему $_GET/$_POST запросу и убери хлам из них + правильно настроенный мод реврайт спасет тебя
 
а есть разница (в смысле безопасности) между такой записью


$_POST = str_replace(' <, >, и другое ненужное', '', $_POST);
$a=$_POST[a];
$b=$_POST;


и такой:

$a = str_replace(' <, >, и другое ненужное', '', $_POST[a]);
$b = str_replace(' <, >, и другое ненужное', '', $_POST);


Может заодно профильтровать уже и $_SESSION $_COOKIE $_SERVER и др ?
 
а есть разница (в смысле безопасности) между такой записью
$_POST = str_replace(' <, >, и другое ненужное', '', $_POST);
$a=$_POST[a];
$b=$_POST;
и такой:
$a = str_replace(' <, >, и другое ненужное', '', $_POST[a]);
$b = str_replace(' <, >, и другое ненужное', '', $_POST);
Может заодно профильтровать уже и $_SESSION $_COOKIE $_SERVER и др ?

Имх, правильнее использовать preg_match()
 
В php-fusion есть вот такая функция:

PHP:
// Prevent any possible XSS attacks via $_GET.
foreach ($_GET as $check_url) {
    if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) || (eregi("<[^>]*object*\"?[^>]*>", $check_url)) ||
        (eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) ||
        (eregi("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) ||
        (eregi("<[^>]*form*\"?[^>]*>", $check_url)) || (eregi("\([^>]*\"?[^)]*\)", $check_url)) ||
        (eregi("\"", $check_url))) {
    die ();
    }
}
unset($check_url);
 
PHP:
$check_url = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $_SERVER['SCRIPT_NAME']);
foreach($_GET as $check_url) {
    if((eregi("<[^>]*script[^>]*>", $check_url)) || (eregi("<[^>]*object[^>]*>", $check_url)) ||
        (eregi("<[^>]*iframe[^>]*>", $check_url)) || (eregi("<[^>]*applet[^>]*>", $check_url)) ||
        (eregi("<[^>]*meta[^>]*>", $check_url)) || (eregi("<[^>]*style[^>]*>", $check_url)) ||
        (eregi("<[^>]*form[^>]*>", $check_url)) || (eregi("\([^>][^)]*\)", $check_url)) ||
        (eregi("<[^>]*frameset[^>]*>", $check_url)) || (eregi("<[^>]*onmouseover[^>]*>", $check_url)) ||
        (eregi("<[^>]*img[^>]*>", $check_url)) || (eregi("\"", $check_url)) || (eregi("'", $check_url))){
        die();
    }
}

Полностью это выглядело так.
 
а POST данные тогда как лучше фильтрить ?

и еще, кто то писал что правильнее использовать preg_match() ? Т.е надо сначало проверить есть ли что то ненужно и если есть то удалить его, а не фильтровать все подряд. Я правильно понял ?
 
а как же наш любимый DLE защищается

function check_xss () {

$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));

if ($url) {

if ((strpos($url, '<') !== false) ||
(strpos($url, '>') !== false) ||
(strpos($url, '"') !== false) ||
(strpos($url, './') !== false) ||
(strpos($url, '../') !== false) ||
(strpos($url, '\'') !== false) ||
(strpos($url, '.php') !== false)
)
{

die("Hacking attempt!");
}

}

тоже нормальное решение
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху