Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как можно в DIV_е с включенным contentEditable запретить использовать <SCRIPT> и <A>? (https://javascript.ru/forum/events/18428-kak-mozhno-v-div_e-s-vklyuchennym-contenteditable-zapretit-ispolzovat-script-i.html)

Маэстро 30.06.2011 14:53

Как можно в DIV_е с включенным contentEditable запретить использовать <SCRIPT> и <A>?
 
Можно ли при использовании режима редактирования блока с contenteditable=yes как-то запретить работу в этом же блоке javascript_ов и активных ссылок?

1. Предполагаю, что редактируемый блок в броузере - это аналог самого броузера. И, если в броузере в целом отключен javascript, то он и в редактируемом блоке работать не будет. Но как бы разрешить работу javascript во всем броузере, а в редактируемом блоке запретить?

2. Можно было бы парсить редактируемый текст, отыскивать теги <A> и удалять их... но как-то муторно это...

Для чего это? Расскажу коротко о глобальной задаче. Есть корпорация с сотрудниками, в которой разрешен доступ только к одному сайту mysite.ru (к другим запрещено). На данном сайте есть окно для редактирования текста (contentEditable) с последующим сохранением в базе данных и обратным отображением в броузере. Сотрудник может дома при наличии доступа к в интернет к другим сайтам скопировать каку-либо полезную для него информацию (например, статью) с другого сайта и вставить в окно mysite.ru
Далее на рабочем месте сотрудник уже имеет доступ к своей статье и ПРЕДОСТАВЛЯЕТ ДОСТУП к своей статье другим сотрудникам.
В чем проблема? Информация может быть скопирована с известного сайта, например, http://www.nokia.ru/products/phones/nokia-c7-00
а может и откуда угодно... То есть, с вредоносного сайта с вытекающими последствиями. А хотелось бы этого избежать.

tenshi 30.06.2011 15:01

тебе нужен html санитайзер на сервере

nikita.mmf 30.06.2011 15:07

вот такой регуляркой можно скрипты вычищать
/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi

Маэстро 30.06.2011 15:32

Цитата:

Сообщение от tenshi (Сообщение 111226)
тебе нужен html санитайзер на сервере

Гугл сообщает, что "Санитайзер — антибактериальный гель, используется для дезинфекции рук..." ;)
Может, подскажете ссылки на готовые (хорошие) скрипты?

Маэстро 30.06.2011 15:34

Цитата:

Сообщение от nikita.mmf (Сообщение 111228)
вот такой регуляркой можно скрипты вычищать
/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi

Хакеры давно это обходят разными способами. Например, скрипт можно создавать "на лету" типа .......write('<scr' + 'ipt>')..... и регулярко - ой.

nikita.mmf 01.07.2011 10:46

Маэстро, но для того чтобы создать на лету скрипт его всего равно надо вставить в тэг script, и еще вам надо вырезать ifram'ы

tenshi 01.07.2011 11:31

учимся пользоваться поиском http://yandex.ru/yandsearch?text=htm...=139040&lr=213

Маэстро 02.07.2011 17:11

Цитата:

Сообщение от tenshi (Сообщение 111327)
учимся пользоваться поиском http://yandex.ru/yandsearch?text=htm...=139040&lr=213

Да чтож такое... какой у нас серьезный профессорско-преподавательский состав! Шуток прям совсем не понимает... учит поиском пользоваться... да еще в яндексе... ;)
Как ни странно, пользоваться поиском я умею. Я просил ВАШИ рекомендации на ХОРОШИЕ скрипты (если знаете), а не спрашивал как пишется слово санитайзер.

Маэстро 02.07.2011 17:26

Цитата:

Сообщение от nikita.mmf (Сообщение 111318)
Маэстро, но для того чтобы создать на лету скрипт его всего равно надо вставить в тэг script

Кому? Мне? Или Вам? А спорим я запущу javascript без тега <script>? ;)
Вот Вам пару примерчиков:
<input type="button" value="1 - здесь нет тега script" onclick=alert('ага!')>
<br>
<input type="button" value="2 - здесь нет тега script" onclick=window.location.replace('http://porno.com')>

Aetae 02.07.2011 17:33

Кое где пропускает и такое.)
<img onerror="alert('И не скрипт и нажимать ничего не надо, хе-хе')" src="0">

Маэстро 02.07.2011 18:13

Цитата:

Сообщение от Aetae (Сообщение 111479)
Кое где пропускает и такое.)
И не скрипт и нажимать ничего не надо, хе-хе

Вот и я о том же. Смотрите, ведь не отрабатывает же скрипт в объектах INPUT и TEXTAREA? Значит броузер как-то отключает это?! Может искать индивидуально в API броузеров?

tenshi 02.07.2011 20:00

если бы умел - уже давно попробовал какой-нибудь, а если бы не устроил - попробовал другой, а не разводил демагогию на форуме.


Часовой пояс GMT +3, время: 16:50.