rengen

Рейтинг
223
Регистрация
03.07.2006
Ayavryk:
Одно из двух или этот кусок не имеет смысла или не имеет смысла весь код.
должен быть или полный запрет на любой контент из неконтролируемых вами источников, в противном случае вы разрешаете выкладывать на сайте все что юзеру захочется. Из фрагмента видно последнее.

Ну если вам нужно:


if ($hacking_protect>1)
{
foreach ($_GET as $sec_key => $secvalue) {
if (
(preg_match("/<[^>]*script*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*meta*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*style*\"?[^>]*>/", $secvalue)) ||
(preg_match("/<[^>]*form*\"?[^>]*>/", $secvalue)) ||
(preg_match("/<[^>]*img*\"?[^>]*>/", $secvalue)) ||
(preg_match("/<[^>]*onmouseover*\"?[^>]*>/", $secvalue)) ||
(preg_match("/<[^>]*onclick*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/\([^>]*\"?[^)]*\)/i", $secvalue)) ||
// (preg_match("/\'/i", $secvalue))||
(preg_match("/\"/i", $secvalue))) {
foreach ($_GET as $key=>$value){
$temp_post .= "[$key] > [$value]";
}
//print_r($_POST);
mqf("INSERT INTO `{$tb_prefix}_hack` (`id`, `vars`, `ip`, `user`, `referal`) VALUES (NULL, '$temp_post', '$_SERVER[REMOTE_ADDR]', '$_COOKIE[$cookie_name]','$_SERVER[HTTP_REFERER]');");

die ("<html><head><title>What are you doing?</title><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\"></head><body><center>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br><br><b>What are you doing? Dont do this again ;)<br />IP: $_SERVER[REMOTE_ADDR]<br />$sec_key $secvalue</b><br><br>[ <a href=\"javascript:history.go(-1)\"><b>Back</b></a> ]");

exit();
}
}

foreach ($_POST as $secvalue) {

if ((preg_match("/<[^>]*onmouseover*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*onclick*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*script*\"?[^>]*>/i", $secvalue)) ||
(preg_match("/<[^>]*iframe*\"?[^>]*>/i", $secvalue) and
!preg_match("/<[^>]*iframe( )src=\"http:\\/\\/vk\\.com\\/video_ext\\.php*\"?[^>]*>/i", $secvalue)
))
{
foreach ($_POST as $key=>$value)
{
$temp_post .= "[$key] > [$value]";
}
//print_r($_POST);
mqf("INSERT INTO `{$tb_prefix}_hack` (`id`, `vars`, `ip`, `user`, `referal`) VALUES (NULL, '$temp_post', '$_SERVER[REMOTE_ADDR]', '$_COOKIE[$cookie_name]','$_SERVER[HTTP_REFERER]');");
die ("<html><head><title>WTF</title>
<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\"></head>
<body><center>
<br><br><b>"._("HTML-теги которые вы собираетесь использовать, нельзя использовать на этом сайте ;)")."</b><br><br>[ <a href=\"javascript:history.go(-1)\"><b>".("Назад")."</b></a> ]");
exit();
}
}
}
if ($hacking_protect>0)
{
foreach ($_POST as $key => $value)
{
if (is_array($_POST[$key])){
foreach ($_POST[$key] as $key2 => $value2){
$_POST[$key][$key2] = addslashes($_POST[$key][$key2]);
}
}
else{
$_POST[$key] = addslashes($_POST[$key]);
}
}
foreach ($_GET as $key => $value)
{
$_GET[$key] = addslashes($_GET[$key]);
}
foreach ($_COOKIE as $key => $value)
{
$_COOKIE[$key] = addslashes($_COOKIE[$key]);
}
}

Функция strip_tags используется в каждом конкретном случае отдельно. Для JS редактора, например, так:


$parsed_text = strip_tags($_POST[text],
"<br><p><img><td><tr><table><tbody><div><ul><em><li><ol><b><strong><u><i><font><h1><h2><h3><h4><h5><h6><h7><pre>");

onclick и onmouseover не засунешь, поскольку это фильтруется на более высоком уровне.

LEOnidUKG:
Я вообще не понял задачу.
Вам вырезать все iframe или оставлять какие-то?! Определитесь уже.

Надо запретить пост iframe кроме содержащих определёный src.

Ayavryk:
Какой смысл вырезать iframe и при этом не чистить все оcтальное script,object,onclick....?
Вы охотитесь за фреймом vk, а вам вставят скрипт который генерирует этот самый iframe или еще проще - фрейм, который будет менять содержимое через js с левого сайта на ту же порнушку но с другого сайта.

Понятное дело, я же не выложу тут весь код обработки POST и GET запросов. Выложил только нужный кусочек. Кроме того надо вести лог кто такие запросы делает, на случай если придётся банить по IP самых злых.

TF-Studio

Весь вводимый текст от пользователей обрабатывается через strip_tags, с перечнем допустимых тегов, но уже после обработки общим парсером. На сайте также используется текстовый редактор, и другие приблуды JS-AJAX. Общая обработка нужна чтобы не заморачиваться с каждым скриптом где нужна проверка (их более трёх десятков на сайте).

Форма для добавления комментария должна быть простой, без "дополнительных полей для видео", потому только так. Ссылку VK не даёт, чтобы встроить видео надо получить код с уникальным хешем.

RiDDi, это может сработать, спасибо, буду ковырять.

bums, сервис располагает к тому, чтобы пользователи делились своими видео фалами.

RiDDi

Да, вы правы, как же добавить "<" в начале регулярки?

установите репозиторий remi читайте тут для своей ОС

http://blog.famillecollet.com/pages/Config-en

а потом сделайте

yum install php-fpm

spawn-fcgi это ведь модуль lighthttp?

Установите php-fpm и не мучайтесь

Поройтесь в конфигах, найдите

PHP_FCGI_MAX_REQUESTS

и поставьте 0 или увеличьте значение до приемлемого.

почему нельзя запустить php-cgi как демон? И почему не php-fpm?

Пожалуйста, задавая вопрос пишите свою ОС и версии установленного ПО, по крайней мере того, о котором спрашиваете.

slaveofmoney:
у нас не бесплатная версия а Standart Edition One, только везде пишут она на два процессора, а у нас в лицензии почему то написано 1

p.s. 180 баксов это на одного пользователя, вы гляньте сколько на процессор лицензия, у нас в конторе покупал не я, а неважно кто, за 400к рублей (входит сервер + сама база)

Тут есть нюансы, если у вас один процессор, но четырёхядерный, вы платите как за два процессора. То есть каждое ядро считается по 0.5 стоимости. Подробнее тут: http://www.westlogic.ru/Licensing/Oracle_lic.php

Если у вас программа использует только один логин-пароль для всех БД, то вам можно купить лицуху на одного пользователя. Но раз вы говорите, что у вас и так полноценная версия, а не фришная, и деньги не ушли в карман вашим предшественикам, то такой вариант апдейта явно не поможет. Смотрите в сторону увеличения RAM, конфигурирования кеша запросов и покупки дополнительного внешнего хранилища и рапределения нагрузки. Увеличить производительность 4x146GB 15K rpm в raid 10 не представляется возможным и вряд ли вам предложат что-то более производительное с бюджетом до 10К долларов. В конце концов, скорость работы любого диска ограничивается ещё контроллером и шиной передачи данных.

Всего: 1281