За последние 24 часа нас посетили 25728 программистов и 1726 роботов. Сейчас ищет 851 программист ...

XSS зашита

Тема в разделе "PHP для новичков", создана пользователем dexby101, 5 мар 2016.

  1. dexby101

    dexby101 Новичок

    С нами с:
    5 мар 2016
    Сообщения:
    11
    Симпатии:
    0
    Поможет ли эта функция от XSS инжекции(для $_GET) или че по хитрее нужно ?
    Код (PHP):
    1. <?php
    2. function protectXSS(){
    3.     foreach ($_GET as $v){
    4.         if(preg_match('#[^a-zA-Z0-9\_\.]#', $v)){
    5.             die("XSS blocked!");
    6.         }
    7.     }
    8. }
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Ну, объясни, что означает эта строка
    Код (PHP):
    1. if(preg_match('#[^a-zA-Z0-9\_\.]#', $v)){ 
     
  3. dexby101

    dexby101 Новичок

    С нами с:
    5 мар 2016
    Сообщения:
    11
    Симпатии:
    0
    Это регулярка на поиск всего кроме букв(латинских) цифр и нижнего слеша, если это найдено то срабатывает это условия!
     
  4. freelsd

    freelsd Активный пользователь

    С нами с:
    12 апр 2015
    Сообщения:
    63
    Симпатии:
    0
    Я думаю да, никаких тегов и лишних знаков этот регексп не пропустит. Даже не знаю как можно исхитриться чтобы обойти такой фильтр.
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Всю информацию которую ты получил от пользователя можно записывать в базу в оригинальном виде используя подготовленные запросы, а вот при выводе пользовательских данных, нужно пропустить их через функцию которая любой html и javascript код, превратит в обычный текст.

    http://phpfaq.ru/tech/safety
    https://secure.php.net/manual/ru/function.htmlspecialchars.php