Парсинг статьи с пробелами?

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Здравствуйте. Изначально парсил статьи атрибутом innerhtml. Но понял что это небезопасно. Если донор вставит свои скрипты в посты данного атрибута innerhtml, то сайт можно легко взломать или нанести какой то вред.

Начал использовать безопасный innertext. Но появилась проблема. Он не сохраняет пробелы. Как это можно исправить?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 448
Благодарностей
9 142
Баллы
113
Здравствуйте. Изначально парсил статьи атрибутом innerhtml. Но понял что это небезопасно. Если донор вставит свои скрипты в посты данного атрибута innerhtml, то сайт можно легко взломать или нанести какой то вред.

Начал использовать безопасный innertext. Но появилась проблема. Он не сохраняет пробелы. Как это можно исправить?
Мало вводной информации..
Урл такой статьи приведите, тогда вам быстро помогут.
 

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
В рф сайт этот не работает.
Торрент свой замутить решил?))
 

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
В рф сайт этот не работает.
Торрент свой замутить решил?))
Да нет. Просто удобно от туда цеплять нужные статьи. Там наибольший контингент на эту тему.
Но я беру через html, а если админ зашьёт туда скрипт волшебный, то я потяну и скрипт. И тогда уже будет опасно.
А через text пробелы не сохраняется, получается сплошной нечитабельный текст.
 

etyipin

Client
Регистрация
15.12.2017
Сообщения
95
Благодарностей
35
Баллы
18
Так если ты знаешь в чем может быть проблема, то почему бы не взять innerhtml, а в пост обработке просто почистить его от скриптов?
 

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Так если ты знаешь в чем может быть проблема, то почему бы не взять innerhtml, а в пост обработке просто почистить его от скриптов?
В том том то и делаю что не знаю, не программист и не кодер. Знаю что есть варианты взлома если залить на сайт шелл или иной код, кто в этом разбирается понимает. И как раз через html это легко сделать.
По поводу постобработки да, то что нужно. Но я никогда этим не занимался. Есть онлайн сервисы с функционалом? Или нечто встроено в зено? Или делать уже на своём сайте?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 448
Благодарностей
9 142
Баллы
113
По поводу постобработки да, то что нужно. Но я никогда этим не занимался. Есть онлайн сервисы с функционалом? Или нечто встроено в зено? Или делать уже на своём сайте?
Попробуйте продолжать брать innerhtml, но через Обработка текста - Замена (Regex) регуляркой <[^>]+>
заменять все html-теги и скрипты на пустоту или пробел в виде макроса {-String.Space-}
 
  • Спасибо
Реакции: liveCreature и etyipin

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Попробуйте продолжать брать innerhtml, но через Обработка текста - Замена (Regex) регуляркой <[^>]+>
заменять все html-теги и скрипты на пустоту или пробел в виде макроса {-String.Space-}
Блин а можно пример маленький :-)
Я так понимаю, сначала беру html (стандартно). Потом через кубик делаю замену всех тегов и скриптов на пустоту. Шото...
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 448
Благодарностей
9 142
Баллы
113
  • Спасибо
Реакции: liveCreature

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Всё получилось. Удалилось всё включая пробелы, получился сплошной текст как в атрибуте innertext.
А вот как сохранить пробелы для читабельности текста, пока не понял. То-есть нужно сохранять теги:
Код:
<br>
 

etyipin

Client
Регистрация
15.12.2017
Сообщения
95
Благодарностей
35
Баллы
18
Всё получилось. Удалилось всё включая пробелы, получился сплошной текст как в атрибуте innertext.
А вот как сохранить пробелы для читабельности текста, пока не понял. То-есть нужно сохранять теги:
Код:
<br>
Сразу делай замену <br> на {-String.Enter-}, а уже потом удаляй лишние теги
 
  • Спасибо
Реакции: liveCreature

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Хотя я думаю если заменить все теги br на
Код:
[br]
И на сайте сделать бб код br. То всё должно получится, вроде.
 

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Сразу делай замену <br> на {-String.Enter-}, а уже потом удаляй лишние теги
Спасибо. Так наверное правильней. Всё получилось. Дальше делаю:
Код:
<[^>]+>
И все пробелы стираются. Видимо нужна другая регулярка.
 

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Всё работает. Я не так переменные вставил. Спасибо всем за помощь!
Остался последний вопрос. Вот мы отфильтровали весь "вредоносный" код. С помощью регулярки возможно оставить тег <a, <img (сохранить картинки в тексте и ссылки)?
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 448
Благодарностей
9 142
Баллы
113
Всё работает. Я не так переменные вставил. Спасибо всем за помощь!
Остался последний вопрос. Вот мы отфильтровали весь "вредоносный" код. С помощью регулярки возможно оставить тег <a, <img (сохранить картинки в тексте и ссылки)?
Регулярка:
Код:
<(?!p|/p|br|img).*?>
находит все теги, кроме <p></p><br><img ...>
Можете ее под себя поправить, убрать лишние варианты, которые идут через оператор или "|" или добавить новые варианты тегов.
Работает тоже через Замену..
 
  • Спасибо
Реакции: Astraport и liveCreature

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Регулярка:
Код:
<(?!p|/p|br|img).*?>
находит все теги, кроме <p></p><br><img ...>
Можете ее под себя поправить, убрать лишние варианты, которые идут через оператор или "|" или добавить новые варианты тегов.
Работает тоже через Замену..
Спасибо! Всё легко и понятно стало :-)
 
  • Спасибо
Реакции: Sergodjan и Mikhail B.

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Доделал проект. Теперь всё легитимно можно сказать :D
Вот такие теги оставил на пост обработке:
Код:
<(?!p|/p|br|a|/a|img|/img|span|/span|ul|/ul|ol|/ol|li|/li|b|/b|i|/i|u|/u).*?>
Старался оставлять теги только под оформление. Но за незнанием всего html да и вообще веб технологий, остался вопрос. С помощью данных тегов, возможно навредить как-то сайту?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 448
Благодарностей
9 142
Баллы
113
Доделал проект. Теперь всё легитимно можно сказать :D
Вот такие теги оставил на пост обработке:
Код:
<(?!p|/p|br|a|/a|img|/img|span|/span|ul|/ul|ol|/ol|li|/li|b|/b|i|/i|u|/u).*?>
Старался оставлять теги только под оформление. Но за незнанием всего html да и вообще веб технологий, остался вопрос. С помощью данных тегов, возможно навредить как-то сайту?
Нет, вреда никакого не будет..
 
  • Спасибо
Реакции: liveCreature

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Ещё раз здравствуйте. Увидел что после постобработки сохраняет:
Код:
<iframe src="//www.youtube.com
Вот постобработка:
Код:
<(?!p|/p|br|a|/a|img|/img|span|/span|ul|/ul|ol|/ol|li|/li|b|/b|i|/i|u|/u).*?>
Вроде как должно удалять фрейм. Но почему то не удаляет. То ли я дурак, то ли лыжи не едут.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Ещё раз здравствуйте. Увидел что после постобработки сохраняет:
Код:
<iframe src="//www.youtube.com
Вот постобработка:
Код:
<(?!p|/p|br|a|/a|img|/img|span|/span|ul|/ul|ol|/ol|li|/li|b|/b|i|/i|u|/u).*?>
Вроде как должно удалять фрейм. Но почему то не удаляет. То ли я дурак, то ли лыжи не едут.
ну там же есть i в перечне)
 
  • Спасибо
Реакции: liveCreature

liveCreature

Пользователь
Регистрация
22.01.2017
Сообщения
87
Благодарностей
10
Баллы
8
Точно. Я как-то и не подумал. А не опасно ли это? :D
То-есть можно же через iframe загрузить что-то другое (специально вредоносное), если потяну себе на сайт?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Точно. Я как-то и не подумал. А не опасно ли это? :D
То-есть можно же через iframe загрузить что-то другое (специально вредоносное), если потяну себе на сайт?
попробуй такую
Код:
<(?!(p|/p|br|a|/a|img|/img|span|/span|ul|/ul|ol|/ol|li|/li|b|/b|i|/i|u|/u)\b).*?>
 
  • Спасибо
Реакции: liveCreature

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)