@rubyschool

Страница 193 из 921
Maksim
02.06.2017
14:04:57
Мне понравился https://alex-d.github.io/Trumbowyg/

Alex
02.06.2017
14:45:39
Возник вопрос: Есть CKeditor, копирую в него текст, жму сохранить. В БД попадает html код, на выводе делаю .html_safe Насколько я понимаю это совсем не секьюрно, чтобы в базе хранился html код? как правильно тогда делать?

Radzhab
02.06.2017
14:46:11
а почему нет

а где их хранить тогда))

Google
Alex
02.06.2017
14:50:00
ну вот вставляем в CKEditor <script>alert()</script> и он вызовет этот алерт. Это же XSS уязвимость, нет?

Oleg
02.06.2017
14:53:14
только с ним (как и с другими в целом) нужно повозиться с настройкой
а для начинающих с прицелом на джуна и удаленку - Sublime Text? насколько понимаю на "все" хватит)

Alex
02.06.2017
15:05:59
ну вот вставляем в CKEditor <script>alert()</script> и он вызовет этот алерт. Это же XSS уязвимость, нет?
Постим это в коммент, делаем релоад страницы и alert() отрабатывает

Vitaliy
02.06.2017
15:08:51
ну вот вставляем в CKEditor <script>alert()</script> и он вызовет этот алерт. Это же XSS уязвимость, нет?
у таких редакторов можно настраивать, какие теги он пропускает, а какие удаляет начисто

геморная тема, но можно добиться, чтобы любой <script> удалялся

Alex
02.06.2017
15:11:26
тоесть из коробки мы получаем уязвимый продукт, да?

Vitaliy
02.06.2017
15:12:08
зависит от редактора, у некоторых политика "Максимум разрешено", у некоторых "Максимум запрещено"

Alex
02.06.2017
15:12:44
ну вот у меня CKeditor из коробки легко пропустил <script></script>

Vitaliy
02.06.2017
15:14:15
значит у него политика "Все разрешено"

Alex
02.06.2017
15:26:57
И как вы в своих проектах решаете проблему XSS injection?

Vitaliy
02.06.2017
15:31:49
никак, в моих проектах пользователям недоступен визивиг

а если будет - настрою ckeditor, а еще лучше - и на сервере обработочку

думаю даже готовые решения есть. гемчик какой-нибудь, с которым можно писать: post.update(text: xss_safe(params[:text]))

Google
Vitaliy
02.06.2017
15:34:16
и в методе xss_safe он сам все сделает (заэкранирует/удалит опасные места)

Alex
02.06.2017
15:44:28
Как вариант можно использовать sanitize, я не разбирался какие тэги он режет, но <script> не прошел

Aleksey
02.06.2017
17:00:30
Возможно очень общий вопрос, но как и куда копать если надо сделать поиск по базе более менее умный

Скажем у меня есть карточка клиента

И мне сделать чтобы искал по фамилии, телефону, айди

Ну и живой типа поиск с подсказками

Alex
02.06.2017
17:01:52
это все одна модель? искал сразу по всем полям одновременно?

Vitaly
02.06.2017
17:02:10
Глянь gem searchkick

Aleksey
02.06.2017
17:02:24
Это будет 2 модели

Спасибо, Виталий сейчас гляну

Vitaly
02.06.2017
17:03:17
Как зависимость потребуется elastic search. Можно за пару минут в docker поднять

Aleksey
02.06.2017
17:03:56
Только бы ещё уметь)))

Эластик надо ставить как пакет в систему верно?

Alex
02.06.2017
17:04:24
Установил CKeditor, добавил в форму <%= f.text_area :body, :class => 'ckeditor' %> - первая загрузка страницы - CKeditor не грузится - reload - грузится, погуглил и обернул text_area в <div data-no-turbolink> - тоже самое. Мне кажется тут кто-то уже спрашивал смежный вопрос, но найти не могу

Vitaly
02.06.2017
17:05:05
Я не ставлю - в контейнере поднимаю и порт прокидываю

Aleksey
02.06.2017
17:05:05
Сейчас сек

https://www.notion.so/df4c32146dd145a5b371adf589437d0f

Google
Aleksey
02.06.2017
17:06:42
Ты постоянно хвалишь докер, а для меня это даже не тёмный лес, а целая планета

Vitaly
02.06.2017
17:06:43
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

Нужно видосики позаписывать

Aleksey
02.06.2017
17:07:33
+100

И вот это "пробросить порт"

Vitaly
02.06.2017
17:08:34
В инструкции уже проброшен

Svetlana
02.06.2017
17:30:19
Подскажите, пожалуйста, какие связки в SQL бывают? Где почитать?

Radzhab
02.06.2017
17:36:09
как полностью удалить конечный пробел? делаю split не особо робит alim_name: ActionView::Base.full_sanitizer.sanitize(row[3].to_s.strip).strip, делаю загрузку из xls в базу как только не пытался убрать пробел - не убирается

кто что скажет

?

а как через gsub убрать последний пробел?

Alex
02.06.2017
17:55:03
конкретно для ckeditor с turbolinks у меня такой код: https://github.com/gambala/gambala/blob/master/app/assets/javascripts/components/ckeditor.coffee
Я только закончил курс Романа и видимо путаюсь в архитектуре, данной директории у меня не было app/assets/javascripts/components/ , её я добавил, в ней сделал файл ckeditor.coffee полностью скопировав Ваш. В app/assets/javascripts/application.js добавил //= require ckeditor/loader и //= require_tree ./components. Убрал из него //= require ckeditor/init. Не работает, ошибок нету, откуда кстати вот это тянется? //= require ckeditor/plugins/codesnippet/lib/highlight/highlight.pack ведь такого путя в Вашем репе нету

и вот это откуда берется? # app/assets/javascripts/ckeditor/loader,js.erb //= require ckeditor/init CKEDITOR.config.customConfig = '<%= javascript_path 'ckeditor/config.js' %>';

такого пути ведь тоже не существует

Vitaliy
02.06.2017
18:02:00
Можно не делать все, как у меня, а взять лишь инициализацию с турболинками

Закрыть для начала этот вопрос. А потом, если будет необходимость - идти дальше

Alex
02.06.2017
18:03:29
app/assets/javascripts/components/ckeditor.coffee вот это Вы имеете ввиду?

Vitaliy
02.06.2017
18:04:06
Да

Alex
02.06.2017
18:05:27
Окей, данный файл я создал. в application.js я в таком случае добавляю лишь //= require_tree ./components и //= require ckeditor/init ?

Google
Vitaliy
02.06.2017
18:06:41
Зачем его создавать?

Alex
02.06.2017
18:07:03
Так его же нету

Vitaliy
02.06.2017
18:09:10
я наверное не до конца понял суть

Alex
02.06.2017
18:09:23
судя по всему и я

Admin
ERROR: S client not available

Alex
02.06.2017
18:10:01
вот здесь же у вас все работало?
при reload page -да, при перехоже по ссылке - нет

вместо него был обычный textarea если не сделать reload page

Vitaliy
02.06.2017
18:10:43
супер, у вас где-то в js он явно инициализируется? с события document.on('ready') например?

Alex
02.06.2017
18:12:51
https://github.com/galetahub/ckeditor делал по данной инструкции. Кроме как тут app/assets/javascripts/application.js прописал //= require ckeditor/init - больше ничего не делал

и в форме добавил <%= f.text_area :body, :class => 'ckeditor' %>

Vitaliy
02.06.2017
18:13:30
аха, круто, значит внутри ckeditor/init уже идет инициализация по document.ready

значит да, нужно добавить вот этот код https://github.com/gambala/gambala/blob/master/app/assets/javascripts/components/ckeditor.coffee в любое место, загружающееся после ckeditor/init

и в целом неважно, что это за место будет

я держу все кастомные скрипты в папке components и подключаю их через require_tree ./components

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

Alex
02.06.2017
18:16:10
Признаюсь, я совершенного не понимаю смысл строки //= require ckeditor/init - ckeditor/init - это что? относительный путь?

Vitaliy
02.06.2017
18:20:24
абсолютный путь до файла init.js, лежащего в папке ckeditor в геме ckeditor-rails

Alex
02.06.2017
18:24:58
окей, создал директорию components в ней файл ckeditor.coffee идентичный вашему

Google
Alex
02.06.2017
18:25:09
в application.js :

//= require jquery3 //= require jquery_ujs //= require rails-ujs //= require turbolinks //= require_tree . //= require bootstrap-sprockets //= require ckeditor/init //= require_tree ./components

//= require_tree ./components - это же подключает все скрипты из папки components?

Vitaliy
02.06.2017
18:39:24
да, все так

но у вас будет ошибка

потому что вот этим //= require_tree . вы уже подключаете все дерево целиком

включая папку components

со скриптом, который должен грузиться после ckdeitor/init

а еще у вас //= require jquery_ujs //= require rails-ujs вместе, хотя не должны

потому что это - одна и та же библиотека, просто для рельс < 5.1 и >= 5.1

у вас рельсы 5.1 сейчас? тогда вот так будет оптимально //= require jquery3 //= require bootstrap-sprockets //= require ckeditor/init //= require rails-ujs //= require turbolinks //= require_tree .

Alex
02.06.2017
19:05:30
сейчас попробую

исправил как Вы написали, тоже самое - первый переход на страницу text_area, reload page - ckeditor

в консоли кстати ошибка появилась Uncaught The editor instance "comment_body" is already attached to the provided element. (anonymous) @ jquery3.self-06c4342….js?body=1:3870

Vitaliy
02.06.2017
19:17:26
так, а text_area вы каким классом сопровождаете?

в моем скрипте есть такая строчка $('.js-ckeditor').each -> ее нужно тогда вам исправить на $('.ckeditor').each ->

Страница 193 из 921