Показать сообщение отдельно

  #2  
Старый 21.07.2008, 12:38
P3L3NG
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>Все&nbsp;

символы

былиотф

ильтров

аны!Сооб

щениеуд

алено!<br><br>

<a href=javascript:history.back()>BACK</a></center>';

exit;

}

?>