
21.07.2008, 12:38
|
|
Banned
Регистрация: 04.06.2008
Сообщений: 402
Провел на форуме: 2267346
Репутация:
719
|
|
вот какбэ моя недоделанная статья про фильтр... тебе остается тока отфильтровать то что я не отфильтровал...
PHP код:
Фильтровать я решил следующие опасные или нежелательные сообщения:
1.Тэги html
2.всякие ' & (спецсимволы в ASCII кодировке)
3."<?" - открывающая конструкция в PHP, которая при вставке в сообщение заглючивает весь комментарий И теоретически дает возможность создать какой-либо скрипт на сервере, например шелл (shell, интерпретатор команд, который дает возможность управлять сервером)
4.JavaScript, который дает возможность осуществить XSS-атаку на бедных пользователей сайта
5.Открывающие конструкции скриптов HTML <
6.Пустые сообщения
Итак, цель поставили... Теперь будем ее решать =)
1.После поиска инфы в справочнике по PHP удалось найти функцию strip_tags. Она как раз получает значение строковой переменной (string), ищет в нем все известные html тэги и возвращает скрипту ту же переменную, но без тэгов...
Пример:
<?php
$message = $_POST['text'];
// получаем переменную из формы
strip_tags($message,"тут разрешенные тэги без запятых и пробелов, если надо");
?>
2. Пункт 1 решает проблему и с этими символами
3. Создаем переменную kaka, равную <? и условие, что если текст равен только этим 2 символам, то вывести надпись "Нехрен портить скрипт!"
<?php
$message = $_POST['text'];
$kaka = "<?";
if ($message == $kaka)
{
echo '<br><br><br><center>Не
хренп
ортить
скрипт!
<br><br>
<a href=javascript:history.back()>BACK</a></center>';
exit;
}
// end of filter
?>
4.JavaScript не будет работать, так как PHP автоматически, вставляя его в страницу, режет его слэшами \\, после чего он не работает
Для сайта JS не опасен в принципе, так как работает на пользовательском компе, и для пользователей теперь тоже...
5.За поиск символов в строке отвечает функция strstr. Если она найдет хоть один указанный символ, то возвратит значение true, которое мы и проверим условием и при успешном его выполнении напишем "Нельзя вставлять открывающую конструкцию!"
<?php
$message = $_POST['text'];
//filter by P3L3NG from [Depth Team]
// search
$texta = strstr($message, "<"); //ищем символ <
// end of search
if ($texta == true) {
echo '<br><br><br><center>Нел
ьзявст
авлять
открыв
ающуюк
онстру
кцию<br><br>
<a href=javascript:history.back()>BACK</a></center>';
exit;
}
?>
6.Создаем переменную blank, равную ничему и условие, что если текст равен переменной, то вывести надпись "Все символы отфильтрованы!Сообщение удалено"
<?php
$message = $_POST['text'];
//FUCKING filter by P3L3NG from [Depth Team]
$blank = "";
if ($message == $blank)
{
echo '<br><br><br><center>Все
символы
былиотф
ильтров
аны!Сооб
щениеуд
алено!<br><br>
<a href=javascript:history.back()>BACK</a></center>';
exit;
}
?>
|
|
|