Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Безопасность работы с html

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Test11
Отправлено: 18 Февраля, 2016 - 11:05:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Необходимо обработать html код который пришлет пользователь и записать его в файл. В том виде котором он есть, без замены тегов, сущностей и тд..

Вопрос, что на счет безопасности. Как быть с безопасностью?
 
 Top
skiphog
Отправлено: 18 Февраля, 2016 - 11:40:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


Помог: 11 раз(а)




Для сохранения данных присланных от пользователей в html формате использую эту старенькую, но вполне рабочую библиотеку Jevix https://bitbucket[dot]org/ur001/jevix/wiki/Home

Описание того, что она делает и где используется можно почитать перейдя по ссылке.
 
My status
 Top
Test11
Отправлено: 18 Февраля, 2016 - 12:02:51
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Данная библиотека работает с html который был переведен в сущности, вернет все теги назад?

То есть с html который был пропущен через htmlspecialchars...

(Отредактировано автором: 18 Февраля, 2016 - 12:03:30)

 
 Top
skiphog
Отправлено: 18 Февраля, 2016 - 12:16:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


Помог: 11 раз(а)




Цитата:
То есть с html который был пропущен через htmlspecialchars...


Нет. Не нужно никакие htmlspecialchars.

Используя эту библиотеку, Вы задаете правила по которым она фильтрует входящий HTML.
А действует она по принципу: "Все не разрешенные теги считаются запрещенными"

На выходе у вас будет безопасный HTML без экранирований и т.п.
 
My status
 Top
Test11
Отправлено: 18 Февраля, 2016 - 12:34:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




А как обстоят дела со стилями с css, что если необходимо получить пользовательские стили.

Со стилями тоже умеет работать? Только в тег необходимо обременить <style>тут пользовательские стили</style>
(Добавление)
PHP:
скопировать код в буфер обмена
  1.                
  2. require('/jevix/jevix.class.php');
  3. $jevix = new Jevix();
  4. $jevix->cfgAllowTags(array('a', 'img', 'strong', 'ul', 'li', 'h1', 'h2', 'div', 'span', 'table', 'thead', 'tr', 'td', 'tbody'));
  5. $jevix->cfgAllowTagParams('img', array('title', 'style', 'src', 'alt'));
  6. $jevix->cfgSetTagChilds('a', 'img', 'strong', 'ul', 'li', 'h1', 'h2', 'div', 'span', 'table', 'thead', 'tr', 'td', 'tbody', true, false);
  7.  $jevix->parse("<img src='/icon.png' alt='Иконка' title='Иконка' style='width:18px;'>");


Ошибку выкидывает, почему?
CODE (html):
скопировать код в буфер обмена
  1.  
  2. and defined in B:\home\test2.ru\www\ips_kernel\jevix\jevix.class.php on line 389

(Отредактировано автором: 18 Февраля, 2016 - 13:19:54)

 
 Top
Viper
Отправлено: 18 Февраля, 2016 - 13:50:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




skiphog пишет:
Для сохранения данных присланных от пользователей в html формате использую эту старенькую, но вполне рабочую библиотеку Jevix
зачем труп сношать?

htmlpurifier.org


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Test11
Отправлено: 18 Февраля, 2016 - 14:16:42
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Блин только разобрался...

Так, htmlpurifier.org эта библиотека все же лучше?
 
 Top
TuX560
Отправлено: 18 Февраля, 2016 - 15:03:56
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Test11 пишет:
Необходимо обработать html код который пришлет пользователь и записать его в файл. В том виде котором он есть, без замены тегов, сущностей и тд..

Вопрос, что на счет безопасности. Как быть с безопасностью?

Объясните люди добрые в чем заключается опасность просто запихать html код который пришлет пользователь в файл?
 
 Top
Мелкий Супермодератор
Отправлено: 18 Февраля, 2016 - 15:46:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




TuX560, о, наконец разумный вопрос.
Та никакой. Принял - сохранил как есть. Минимум кода, минимум проблем.
Скользкий момент может быть только с тем, что с этим файлом происходит потом. Если его надо отдавать обратно пользователям - то его нельзя отдавать как text/html. Форсирование plain text или octet-stream хороший вариант. И, разумеется, этот файл не должен попадать какому-нибудь серверному интерпретатору, тому же PHP.
И соответственно вопрос должен звучать - есть html, которых приходит от пользователя. Я хочу с ним сделать X. На какие грабли обратить внимание?


-----
PostgreSQL DBA
 
 Top
Test11
Отправлено: 19 Февраля, 2016 - 00:03:22
Post Id


Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Ок, спс.

Необходимо будет отдавать html другим пользователям на сайте. Кто знает, быть может кто нибудь запихает скрипт и тд...


У меня такой вопрос по библиотеке htmlpurifier, в доках http://htmlpurifier[dot]org/docs
Не могу найти конфиг, который бы разрешал теги input, по умолчанию он их удаляет...

Не подскажите как это сделать?
(Добавление)
$config->set('Core', 'HiddenElements', array ('input'=>true));

Не рабоает
(Добавление)
Мужики, нужна помощь Получай молотком

(Отредактировано автором: 19 Февраля, 2016 - 00:03:59)

 
 Top
TuX560
Отправлено: 19 Февраля, 2016 - 08:12:52
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Test11 пишет:
Ок, спс.

Необходимо будет отдавать html другим пользователям на сайте. Кто знает, быть может кто нибудь запихает скрипт и тд...

Тогда другой вопрос, а зачем html принимать от пользователя и отдавать его другим? Для простого форматирования есть BBCode и другие методы безопасного форматирования(на мой взгляд свою не долго/не сложно написать). Не отрицаю мы лишим свободы наших пользователей писать html, но уже точно обезопасим без всяких проблем. Просто не могу представить зачем действительно необходимо получать от обычных пользователей куски html.

ЗЫ: К сожалению по заданным тобой вопросам ничем не могу помочь, тк не сталкивался с этим.
 
 Top
Мелкий Супермодератор
Отправлено: 19 Февраля, 2016 - 09:45:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Test11 пишет:
Необходимо будет отдавать html другим пользователям на сайте

Зачем и в каком виде?


-----
PostgreSQL DBA
 
 Top
Viper
Отправлено: 19 Февраля, 2016 - 09:52:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




TuX560 пишет:
Тогда другой вопрос, а зачем html принимать от пользователя и отдавать его другим? Для простого форматирования есть BBCode и другие методы безопасного форматирования(на мой взгляд свою не долго/не сложно написать). Не отрицаю мы лишим свободы наших пользователей писать html, но уже точно обезопасим без всяких проблем. Просто не могу представить зачем действительно необходимо получать от обычных пользователей куски html.

Сложные структуры через bbcode = попаболь. Костылезация с тонной регулярок?

Test11 пишет:
Не могу найти конфиг, который бы разрешал теги input, по умолчанию он их удаляет...

PHP:
скопировать код в буфер обмена
  1. $config->set('HTML.Allowed', 'p,b,a[href],i,input');


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
TuX560
Отправлено: 19 Февраля, 2016 - 09:59:48
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Дек. 2015  


Помог: 3 раз(а)




Viper пишет:
Сложные структуры через bbcode = попаболь. Костылезация с тонной регулярок?

Я к тому что есть ли смысл позволять пользователям отправлять сложные html структуры(есть большое сомнение что преобладающее большинство этим пользоваться вероятнее всего не будет). К тому же есть альтернативные методы безопасной разметки, к примеру вики-разметка, если не ошибаюсь, не позволяет вставлять скрипты.
 
 Top
Viper
Отправлено: 19 Февраля, 2016 - 11:21:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




TuX560 пишет:
Я к тому что есть ли смысл позволять пользователям отправлять сложные html структуры(есть большое сомнение что преобладающее большинство этим пользоваться вероятнее всего не будет). К тому же есть альтернативные методы безопасной разметки, к примеру вики-разметка, если не ошибаюсь, не позволяет вставлять скрипты.

Зависит от случая.
вики-разметка ещё тот геморой. Такая же "удобная" как и markdown.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB