Что такое XSS и как закрыть дыру?

1. ion (22.02.2010 / 06:26)
В чате у админов узнали пароли! И сказали что воспользовались XSS! Как закрыть такие проникновения?

2. Удаленный (22.02.2010 / 07:59)
XSS это уязвимость используется методом GЕT,для защиты от этой уязвимости нужен грамотный фильтр,запрет впускания в каталоги и подкаталоги,это слэши,я работал с этой функцией не давно,как дома буду скину тебе фильтр.

3. ion (22.02.2010 / 08:12)
2 спасибо

4. Удаленный (22.02.2010 / 10:22)
Фильтруй
<?php
function xss () { 
    $url = html_entity_decode(urldecode($_SERVER['QUERY_STRING'])); 
    if ($url) { 
        if ((strpos($url, '<') !== false) or 
        (strpos($url, '>') !== false) or
        (strpos($url, '(') !== false) or
        (strpos($url, ')') !== false) or
        (strpos($url, '"') !== false) or
        (strpos($url, ':') !== false) or
        (strpos($url, '/') !== false) or 
        (strpos($url, './') !== false) or 
        (strpos($url, '../') !== false) or 
        (strpos($url, '\'') !== false) 
        ) { 
            exit("Попытка взлома"); 
        } 
    } 
}
?>


5. Артур (22.02.2010 / 10:34)
4, бред какой-то

6. Удаленный (22.02.2010 / 10:38)
5. Fuelen, Напиши не бред.

7. Дима (22.02.2010 / 12:01)
Fuelen (Сегодня / 10:34)
4, бред какой-то
чем писать замечания бред или нет написал бы тогдла как правильно D

8. Удаленный (22.02.2010 / 13:02)
Фильтр от XSS и SQL иньекций
function antihack() {  
$uri = $_SERVER['REQUEST_URI'];
$arr_u = explode("?", $uri );   
$url = $arr_u[0];    
$p_url = $arr_u[1];  
$inj='/script|http|<|>|<|>|SELECT|UNION|UPDATE|AND|exe|exec|INSERT|tmp/i'; 
if (preg_match($inj, $p_url )) { ie("Гуляй Вася!");  }}  
antihack ();


9. ктулху (22.02.2010 / 16:28)
8, это от SQL иньекций
Богдан по идее правильно написал, но XSS могут и методом POST заюзать и не только в URL

10. ion (22.02.2010 / 17:22)
так подскажите какой будет действенный метод!!!!

11. Neformat (22.02.2010 / 17:26)
Действенный метод - это фильтровать все входящие гет, пост, куки данные там где это нужно и соответствующими функциями.
А фильтровать весь гет или пост массив, как я часто встречаю, да еще универсальными функциями с регулярками - очень скажется на производительности.

12. Б.В. (22.02.2010 / 17:53)
При вы8воде данных в браузере: htmlspecialchars фильтруем, при запросах в мускул mysql_escape_string фильтруем (цыфры для запросов я проверяю через ctype_digit, чтоб быть вполне уверенным)

13. ion (22.02.2010 / 18:11)
Neformat (Сегодня / 17:26)
Действенный метод - это фильтровать все входящие гет, пост, куки данные там где это нужно и соответствующими функциями.
А фильтровать весь гет или пост массив, как я часто встречаю, да еще универсальными функциями с регулярками - очень скажется на производительности.
Так вроде эти переменные фильтруются а гады все равно узнают пароли

14. ктулху (22.02.2010 / 18:18)
14, кто же их в открытом виде то хранит? и мне кажется что там явно не XSS, или у тебя пароли прямо в URL идут

15. Neformat (22.02.2010 / 18:32)
#14. если бы они все фильтровались, тебя бы не взломали

16. Titov (22.02.2010 / 18:38)
ну да гетом ловят видимо, пусть не переходят по прямых линках, или сесиионную авторизацию делай, куки, да масса вариантов для защиты, было бы желание

17. Удаленный (23.02.2010 / 04:47)
10,писал 2 кода,просто последний форум не задублировал,дома напишу от XSS.
А по теме использовать для фильтра strip_tags(); вырежим строчные теги php|html
htmlspecialchars() - работает по спец символам,вот ещё функция htmlentities() конвертирует все символы в строке (кроме букв),ну и stripslashes() удалим экранированные символы.

18. Nu3oN (24.02.2010 / 01:49)
я у себя запретил в url все кроме : / . ? & и в полне спокоен! и фильтрую каждую переменную полученную через гет и пост, все что можно заменить, заменяю! и вполне уверенно чувствую себя smile

19. Славик (24.02.2010 / 01:56)
Заяц скинь код

20. ramzes (24.02.2010 / 03:21)
Вообще ни чего не запрещаю ни когда в адресе..
Все переменные на месте фильтрую.
Эти универсальные методы лажа и лишняя нагрузка.
Site.ru/?page=fuck
и фильтр обосрался, и ресурсы сожрал и проку 0.
$_MYGET['page'] = abs(intval($_GET['page']));
$_MYGET['id'] = abs(intval($_GET['id']));
$_MYGET['login'] = (preg_match('|^[a-z0-9]{3,20}$|i',$_GET['login']) ? $_GET['login'] : false;
проще свой массив создать и из него брать нужные переменные уже правильно отфильтованными.
Если уж так хочется чего ни будь в шапку запихнуть..

21. Олег (24.02.2010 / 20:44)
Откуда вы взяли что XSS передаетсячерез GET? Не верьте! XSS передается любым способом - подменой кук, пост, гет, запросом.
http://ru.wikipedia.org/wiki/XSS

22. Удаленный (25.02.2010 / 08:54)
22. ты так сказал как будто открыл глаза всем,имелось ввиду про основную передачу.

23. Валерий (25.02.2010 / 14:25)
Основная скорее POST чем GET

24. Nu3oN (25.02.2010 / 15:22)
Aligan (24.02.10 / 20:44)
Откуда вы взяли что XSS передаетсячерез GET? Не верьте! XSS передается любым способом - подменой кук, пост, гет, запросом.
http://ru.wikipedia.org/wiki/XSS
молодец! возьми печеньку с полочки! если бы ты не сказал, на этом форуме ни кто бы не додумался до этого! и ты даже половину не перечислил!

25. ктулху (25.02.2010 / 15:43)
25, ну что ты так бурно реагируешь? Ну сказал человек и сказал, молодец он, пояснил важный момент. Что уж прям трагедию из этого делать.

26. Удаленный (25.02.2010 / 15:44)
26. ну тыкать в вику,это уже что то с чем то)

27. ramzes (25.02.2010 / 15:45)
Гг интересно где написанно какой из массивов основной?
Все зависит от конкретного скрипта.
Че основного в $_POST если скрипт например библиотека или архив файлов?

28. Олег (25.02.2010 / 17:14)
ЗАЯЦ, иди коси траву ***!
TRUE, твои ли это слова были >>XSS это уязвимость используется методом GЕT
Я впервую очередь для таких как ты написал ссылку на википедию, чтобы не вводили других людей в заблуждение.

29. Удаленный (25.02.2010 / 17:32)
27. True, Согласен.
29. Aligan, с GET запросами удобнее работать.

30. Nu3oN (25.02.2010 / 17:40)
ShiftBHT (Сегодня / 15:43)
25, ну что ты так бурно реагируешь? Ну сказал человек и сказал, молодец он, пояснил важный момент. Что уж прям трагедию из этого делать.
Я бурно реагирую? я просто сделал замечание smile так сказать поправку smile

31. ramzes (25.02.2010 / 17:49)
Раздули из мухи слона.
Человек по теме сказал, а знаете вы это или нет, роли не играет. На форуме много тех кто даже не знают что такое хсс, им и линк лишним не будет.
#31 бурно.

32. Nu3oN (25.02.2010 / 17:53)
ramzes (Сегодня / 17:49)
#31 бурно.
ну бурно, так бурно! со стороны виднее...

33. Олег (25.02.2010 / 20:03)
BAGIR, при чем тут удобство. Наоборот, get-запросами удобно манипулировать, когда делаешь sql-инъекцию, а вот xss, это когда, например, в форму пишешь вредоносный яваскрипт. Например можно написать js, который будет под сообщениями пользователя будет скрывать скрытый див со свойством display : none, и в этом диве будут отображаться содержимое кук пользователя - пароль или его хеш, логин. XSS, это в первую очередь кража информации со стороны клиента, а не сервера.

34. ZipeR (27.02.2010 / 15:35)
а я умею пользоваться XSS я хакал так одного дятла в чате,давным давно ещё

35. ramzes (27.02.2010 / 16:03)
Возьми с полки пирожок.
Похвалился что ли?))

36. ZipeR (27.02.2010 / 16:22)
36,да нет просто сказалsmile

37. Удаленный (27.02.2010 / 19:26)
тема вроде не - кто умеет пользоваться xss ??

38. ктулху (28.02.2010 / 10:00)
38, а по теме и не ответить ничего толком, телепатов то тут нет

39. Azzido (28.02.2010 / 20:00)
Мне кажется там тупо сниффер применен, если id сессии или пароль в url хранится, а про хss просто для звучности сказано

40. Azzido (28.02.2010 / 20:05)
Мне кажется там тупо сниффер применен, если id сессии или пароль в url хранится, а про хss просто для звучности сказано

41. Fest (01.03.2010 / 08:39)
41. Это снифер и всё просто украли кукис.

42. Александр (02.03.2010 / 18:47)
41. согласен. фильтруй все переменные, сообщение и т.п, часто встречаю в чатах не фильтрованые переменные в "О себе", либо если пароль и логин хранятся в гет запросе, при переходе из информации о пользователе по сайту(сайт пользователя), передаются данные в referer. смотри может пользователь постит смайлами из снифера...

43. Zarj (14.06.2012 / 07:25)
помогите вот это исправить пожалуйста echo "<a href='?".url("d=$l&amp;page=($_SESSION[page])")."'>вернуться</a><br />\n";

44. XoPyC (14.06.2012 / 11:24)
Zarj (14 Июня 2012 / 07:25)
помогите вот это исправить пожалуйста echo "<a href='?".url("d=$l&amp;page=($_SESSION[page])")."'>вернуться</a><br />\n";
echo "<a href='?".url("d=$l&amp;page=".htmlspecialchars($_SESSION["page"])."")."'>вернуться</a><br />\n";


45. Zarj (14.06.2012 / 18:11)
Народ двойные ковычки " или одна ' . Как правильно

46. Zarj (15.06.2012 / 00:36)
mysql_query("INSERT INTO `loads_komm` (`id_user`, `time`, `msg`, `file`, `size`) values('$user[id]', '$time', '".my_esc('$msg')."', '$jfile', '$size')");
SQL Injection- как ее тут закрыть

47. Андрюха (16.06.2012 / 14:56)
и функцию my_esc();

48. jama (24.09.2013 / 04:27)
как найти диркы с сайта

49. Дмитрий (24.09.2013 / 05:47)
51. jama, Однозначно, только нанять специалиста. На любом фриланс-сайте.

50. Андрей (09.11.2013 / 14:21)
"диркы" ?
Выкинуть пабличные скрипты и написать свои.

URL: https://visavi.net/topics/6299