Подскажите решение для визуального редактора для пользователей сайта

G
На сайте с 15.08.2009
Offline
38
730

Хочется дать возможность юзерам редактировать текст, но с другой стороны начнут пропихать xss.. Подскажите как лучше поступить. Может есть готовый класс для такой задачи?

Куплю ссылки, размещу статьи на сайтах агро и смежных с агробизнесом тематик.
S
На сайте с 23.05.2004
Offline
315
#1

http://nicedit.com/demos.php посмотрите.

А что бы не пропихивали xss , пропустить через strip_tags() со списком разрешенных тегов.

Это просто подпись.
Ayavryk
На сайте с 11.10.2003
Offline
209
#2

Сейчас много "легких" редакторов появилось

http://pietschsoft.com/demo/jHtmlArea/

http://nicedit.com/demos.php

http://code.google.com/p/jwysiwyg/ - мой любимый.

Из "легких", наверное самый лучший http://remiya.com/cms/projects/jquery-plugins/htmlbox/ , но реально не пробовал его. Единственный из "легких", кто умеет добавлять атрибут класса + имеет исчерпывающую документацию.

Для сложной верстки можно использовать одновременно два редактора с динамической заменой. Посмотрите решение с двойным редактором:

http://erum.ru/article/39

от внедрения когда поможет только принудительная зачистка. А она все равно нужна не столько из-за вредоносного кода сколько из-за мусора который появляется при копировании из MS Word. Для последнего можно взять готовое решение. Наиболее продвинутый наверное вот этот скрипт: http://www.phpclasses.org/browse/package/1020.html - здесь одновременно идет подчистка мусора и запрет на определенные теги и атрибуты.

Stek:
что бы не пропихивали xss , пропустить через strip_tags() со списком разрешенных тегов.

strip_tags() кстати может не спасти. JS можно вляпать в атрибут типа onmouseover

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
Dreammaker
На сайте с 20.04.2006
Offline
569
#3

Ayavryk, для фильтрации можно использовать ещё и HTMLPurifier http://htmlpurifier.org/ . В Yii он используется как встроенная "чистилка".

Ayavryk
На сайте с 11.10.2003
Offline
209
#4
Dreammaker:
HTMLPurifier http://htmlpurifier.org/ . В Yii он используется

. Все больше и больше нравится Yii :)

G
На сайте с 15.08.2009
Offline
38
#5

Скачал http://code.google.com/p/jwysiwyg/

Для чистки кода мне понятен http://www.phpclasses.org/browse/package/1020.html

Хватит ли мне этого пхп класса(htmlcleaner) ?

Не совсем понял как пользоваться http://htmlpurifier.org/ ... Что-то там примеров нет совсем..

Он вроде тоже как для очистки хтмл используется?

Ayavryk
На сайте с 11.10.2003
Offline
209
#6
gazmyas:
Хватит ли мне этого пхп класса(htmlcleaner) ?

Не уверен. Но MS Word он чистит великолепно. Я пока багов не нашел. На предмет вредоносного кода надо внимательно изучать класс и пробовать. Но я бы не стал заморачиваться и дополнил бы регулярным выражением, который срезает все атрибуты, начинающиеся с префикса "on".

По поводу HTMLPurifier Dreammaker дал подсказку - ройте YII. Сам этим обязательно займусь, но не сейчас.

S
На сайте с 12.11.2009
Offline
13
#7

Личное имхо - для такой простой задачи, как чистка ХТМЛя, юзать достаточно увесистую библиотеку - несколько накладно (если не нужно делать что-то совсем экзотическое)

HTML чищу просто через DOMDocument::loadHTML и XPath-ом выгребаю текстовые ноды/разрешённые тэги/атрибуты

зы: разумеется, ко всему этому не лишнее написать небольшой хэлпер

Ayavryk
На сайте с 11.10.2003
Offline
209
#8
snatch:
HTML чищу просто через DOMDocument::loadHTML и XPath-ом выгребаю текстовые ноды/разрешённые тэги/атрибуты

вы маньяк, но ход ваших мыслей мне определенно нравится :)

rtyug
На сайте с 13.05.2009
Offline
263
#9

на фоурме ikonboard такое

    $self->{value} =~ s!\0!!g;
$self->{value} =~ s|&|&|g;
$self->{value} =~ s|<!--|<!--|g;
$self->{value} =~ s|-->|-->|g;
$self->{value} =~ s|<script|<script|ig;
$self->{value} =~ s|>|&gt;|g;
$self->{value} =~ s|<|&lt;|g;
$self->{value} =~ s|"|&quot;|g;
$self->{value} =~ s| | &nbsp;|g;
$self->{value} =~ s!\|!|!g;
$self->{value} =~ s|\n|<br>|g;
$self->{value} =~ s|\$|$|g;
$self->{value} =~ s|\r||g;
$self->{value} =~ s|\_\_(.+?)\_\_||g;
$self->{value} =~ s|\\|\|g;
$self->{value} =~ s|\'|'|g;
$self->{value} =~ s|!|!|g;
Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
V
На сайте с 09.02.2004
Offline
75
#10

FCKEditor http://ckeditor.com/download

http://ru.wikipedia.org/wiki/FCKeditor

Стандарт де-факто для сайтовых редакторов. Очень крутая вещь

Как создать веб-страницу? Видео-уроки научат (http://sozdaniestranic.ru). Торопитесь! http://sozdaniestranic.ru (http://sozdaniestranic.ru)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий