1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем AchiLLeSS, 26 дек 2006.

Статус темы:
Закрыта.
Модераторы: latteo
  1. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415
    защита сайта от XSS атак.

    Может есть какой нибудь скрипт от этой дряни ?
     
  2. difour

    difour Прохожие

    фильтруй входящие данные, к примеру пройдись по всему $_GET/$_POST запросу и убери хлам из них + правильно настроенный мод реврайт спасет тебя
     
  3. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415
    а есть разница (в смысле безопасности) между такой записью


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


    и такой:

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


    Может заодно профильтровать уже и $_SESSION $_COOKIE $_SERVER и др ?
     
  4. KrasivayaSvo

    KrasivayaSvo Создатель

    Регистр.:
    12 ноя 2006
    Сообщения:
    21
    Симпатии:
    7

    Имх, правильнее использовать preg_match()
     
  5. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    27
    В 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);
     
  6. AeroWave

    AeroWave

    Регистр.:
    9 май 2006
    Сообщения:
    209
    Симпатии:
    11
    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();
        }
    }
    Полностью это выглядело так.
     
  7. AchiLLeSS

    AchiLLeSS

    Регистр.:
    13 дек 2006
    Сообщения:
    841
    Симпатии:
    415
    а POST данные тогда как лучше фильтрить ?

    и еще, кто то писал что правильнее использовать preg_match() ? Т.е надо сначало проверить есть ли что то ненужно и если есть то удалить его, а не фильтровать все подряд. Я правильно понял ?
     
  8. morgan_spb

    morgan_spb Постоялец

    Регистр.:
    15 сен 2006
    Сообщения:
    55
    Симпатии:
    1
    а как же наш любимый 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!");
    }

    }

    тоже нормальное решение
     
Статус темы:
Закрыта.