Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> толкнулся с проблемой 
V
    Опции темы
Shark
Дата 7.7.2009, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



как, если возможно, перехватить все события javascript'a ??

чтоб такого не было и вообще чтоб это не проходило
Код

<img src=bye.gif onmouseover=alert(document.cookie)>



--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
icewind
Дата 8.7.2009, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



А зачем давать в сообщения html код вставлять? Это необходимо?


--------------------
user posted image
PM MAIL Skype   Вверх
Shark
Дата 8.7.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



да... BB-code, smiles, теги форматирования текста


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
icewind
Дата 8.7.2009, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Ну так bb code и smiles это не html код, они иметь таких атрибутов не могут. Конечно можно выпарсить регулярками то, что не нужно. Просто мне кажется тут подход немного не удобный... Лучше определить псевдо тэги (bb codes) а потом уже при показе их переводить в нормальный html


--------------------
user posted image
PM MAIL Skype   Вверх
Staind
Дата 8.7.2009, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



Добавлю, что держать в базе исключительно bb аналоги html тэгов гораздо безопаснее.
P.s. замена всех нужных bb тэгов на html тэги, как правило, проходит быстро.
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
Shark
Дата 8.7.2009, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



думаю не стоит отходить от темы.. вопрос "Как перехватить все события javascript'a"
Код

onmouseover=alert(document.cookie)
такие кусочки


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
ksnk
Дата 8.7.2009, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Shark, пробежаться по всем вставляемым тегам и почистить у них все атрибуты, начинающиеся на on
Код
function scanDomTree (e,callback,lvl){
    var o= e,
        stack=[null]
    if(typeof(lvl)=='undefined') lvl=1000; // never climb so deap;
    do {
        if(!o) {
             o=stack.pop(); continue  // go up
        }
        if(callback.call(this,o))
            return o;
        if (o.firstChild && stack.length<=lvl) {
            stack.push(o.nextSibling);
            o=o.firstChild; // go deep
        } else
            o=o.nextSibling
    } while(stack.length)
    return null;
};
  
function clearEvt(html){
    var div=document.createElement('div'); div.innerHTML=html;
    scanDomTree (div,function(x){
        var evt=[];
        if(!x.attributes) return;
        for(var i=0;!!x.attributes[i];i++){
            if (x.attributes[i].name.match(/^on/)) evt.push(x.attributes[i].name);
        }
        for(i=0;i<evt.length;i++)
            x.removeAttribute(evt[i]);
    });
    return div;
}

document.body.appendChild(clearEvt('<a onclick=alert(111) href="yyy">xxx</a>'));




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Shark
Дата 8.7.2009, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



ksnk, на сколько я понял это JS код, 
а как его подключить к проверки сообщения?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
ksnk
Дата 8.7.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Shark @  8.7.2009,  00:39 Найти цитируемый пост)
вопрос "Как перехватить все события javascript'a"

В каком месте все события JavaScript'а будут перехватываться? В PHP? 
Тогда регулярками вычистить...





--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
icewind
Дата 8.7.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Можно попробовать отпарсить все тэги по очереди
Код

$str = '<img src=bye.gif onmouseover=alert(document.cookie)> some text <a href="#" onclick="alert(document.cookie)">test</a>';
$matches = array();
preg_match_all('~<.*?>~', $str, $matches);
if( count($matches) )
{
   $fixed = "";
   foreach( $matches[0] as $tag )
   {
      if( preg_match('~<.*?\son.*?>~', $tag) )
      {         
         $fixed = preg_replace('~on.*?="?.*?(>|\s)~', '$1', $tag);
         $str = str_replace($tag, $fixed, $str);
      }
   }
}
echo $str;



--------------------
user posted image
PM MAIL Skype   Вверх
Shark
Дата 8.7.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



ksnk, до записи в БД
icewind,  спс, попробую

Добавлено через 9 минут и 10 секунд
icewind, спасибо... работает


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.