|
|
|
| Добрый день.
Задача такая: пользователь может вставлять в textarea теги и javascript, но не может вставлять php/perl. Как грамотно защититься от недоброжелателей? Использование функций addslashes() и htmlspecialchars() в данном случае не прокатит.
Спасибо. | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 12:11)
| | Вставляемый пользователем код ведь для вывода на страницу? Значит htmlspecialchars() к этому коду, или <XMP>любой код</XMP>. Или здача иная? | |
|
|
|
|
|
|
|
для: sim5
(19.09.2008 в 12:25)
| | да. то что вставляет пользователь, будет выводится на странице.
НО. нужно пропускать теги и js код. поэтому эти функции не подходят.
может быть нужно создать массив каких-либо символов для автозамены? | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 12:31)
| | Что значит пропускать теги, HTML? А я разве вам говорю о них? Вы хотите, чтобы код JS, который введет пользователь, исполнялся при выводе? | |
|
|
|
|
|
|
|
для: sim5
(19.09.2008 в 12:34)
| | Да | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 12:40)
| | И о какой защите тогда может идти речь? | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 12:40)
| | с сайта php.net
htmlspecialchars — Преобразует специальные символы в HTML сущности
....
Производятся следующие преобразования:
* '&' (амперсанд) преобразуется в '&'
* '"' (двойная кавычка) преобразуется в '"' when ENT_NOQUOTES is not set.
* ''' (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
* '<' (знак "меньше чем") преобразуется в '<'
* '>' (знак "больше чем") преобразуется в '>'
это значит, что пользователь написав тег <b> после сохранения увидит <b>
эта функция не подходит.
мне нужно чтобы выводились нормально текст, теги и js-код. только. остальное (php,perl) блокировалось. | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 12:46)
| | А вы не боитесь, что я вам червя закину, если вы мне разрешите вводить исполнямый на странице скрипт? Для того, чтобы дать пользователю возможность вводить <b></b> существует ВВ-код. | |
|
|
|
|
|
|
|
для: sim5
(19.09.2008 в 12:55)
| | хорошо. тогда так. для удобства пользователя используется редактор TinyMCE, в котором он, помимо текста может вставить теги. Также существует поле для вставки кода счетчиков на сайт.
Червя то пользователь вставит, но только к себе на страницу. Мне же надо обезопасить себя, чтобы пользователь не влез в систему. | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 12:59)
| | Ах даже так, ну-ну. Есть такая штука, как IFRAME, ничего не мешает мне встроить тогда ее на страницу. Работать конечно она будет у клиента, но ведь запущен он будет от имени вашего домена, а значит мне доступно многое. Да и на клиенте я могу куку свободно уже воровать и себе отсылать.
Не городите ерунды, код, который вводит вам пользователь это "для почитать", а вот то что надо исполнять, то это должно быть только вашим. | |
|
|
|
|
|
|
|
для: sim5
(19.09.2008 в 13:04)
| | как тогда реализованы подобные системы на хостингах, предоставляющих конструкторы сайтов?
воровать куку. да там по сути ничего нет важного. читать - не записывать. домен в данном случае будет не мой, а пользователя. если вы правы, то как же быть с подобными системами. неужели они лишены безопасности? | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 13:15)
| | Не знаю о каких конструкторах говорите вы, но, если разговор о JS, то я бы уже предоставил необходимую библиотеку, которая бы выполняла "желания" пользователя, типа div, который слева, хочу видеть справа. Но чтобы мне пользователь всякий скрипт закидывал... Нет уж извольте, таким образом можно на машину клиентов, если такие самопальные шедевры могут видеть все, можно столько накидать. Ведь есть куда страшнее вещи чем JS. | |
|
|
|
|
|
|
|
для: sim5
(19.09.2008 в 13:25)
| | хорошо. убираем возможность вставки js и тега <iframe>. как решить задачу? | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 13:35)
| | Задачу чего? Если блокировать выполненеие любого кода, который ввел автор, то я уже говорил как. | |
|
|
|
|
|
|
|
для: sim5
(19.09.2008 в 13:40)
| | Задача - возможность добавления тегов. исключая js, php, perl. | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 13:42)
| | Каких тегов и зачем? Пусть он втсавляет что хочет. Для того чтобы их увидеть на странице как текст - знаете как, для того чтобы исполнить, то РНР код и так на клиенте никак не будет исполнен, а остальное уже обсуждалось.
PS. Не IFRAME страшен сам по себе, а задачи для которых он может использоваться. | |
|
|
|
|
|
|
|
для: prosaic
(19.09.2008 в 13:42)
| | введите псевдо теги разрешенные для использования и обрабатывайте их... | |
|
|
|