Как реализовать безопасный текстовый редактор для редактирования контента - PullRequest
0 голосов
/ 08 июля 2011

На сайте имеется другой контент, который разрешено создавать / редактировать - новости, статьи и т. Д.

Как правильно и безопасно передавать данные из редактора в базу данных?

Я бы хотел использовать редактор wysiwyg, потому что потенциальные пользователи этого редактора не будут такими опытными пользователями (уценка и BB-код будут для них трудными, они хотят, как в MS Word =))

Также я хотел бы добавить ограничения в этот редактор, например: нет изображений, только 5 цветов, только 3 типа шрифтов и т. Д. (Это можно сделать при ограниченных элементах управления этого редактора)

Мой вопрос: как сделать этот редактор безопаснее? Как запретить добавление лишнего html от пользователя или тегов <script>. Нужно ли делать html-фильтр данных, поступивших из базы данных (сохраненный контент, который пользователи писали в редакторе) при отображении страницы шаблона этого контента (новости или статьи)?

Должен ли я хранить контент в формате HTML в базе данных? (Если я хочу wysiwig-редактор и он выводит HTML после сохранения). Или, может быть, я должен преобразовать HTML из редактора в bb-код или уценку (будут все мои ограничения и ограничения) и очистить весь лишний HTML ... А затем при получении содержимого из базы данных - я должен преобразовать bb-code / markdown в HTML еще раз.

А может быть, есть более простые и быстрые способы сделать это безопасным?

1 Ответ

0 голосов
/ 08 июля 2011

Если вы заполняете текст во innerHTML, скажем, div, он позволяет пользователю написать html и отобразить его в виде HTML позже.Однако, если вы не хотите, чтобы люди вводили HTML, вы можете вместо этого использовать innerText.innerText работает так же, как innerHTML, но не затрагивает анализатор HTML.

Если вы планируете использовать код bb или уценку, вы должны проанализировать текст для кода, который необходимо преобразовать, а оставшуюся часть оставить в виде текста.

Вы также можете использовать синтаксический анализатор regex для преобразования специальных символов в HTML-код , а затем код bb или уценку в html


Попробуйте это:

При сохранении в базу данных: замените известный html с хорошим форматированием на 1015 * с кодом bb, заменив <b> на [b].Однако плохо отформатированный HTML останется напечатанным <b > останется <b >.Затем выполните замену регулярного выражения для всех специальных символов HTML (т. Е. <И>)

Затем при извлечении из базы данных вы заменяете код bb на html и все готово.

...