Какие шаги следует предпринять для защиты введенного пользователем контента на CMS?


Предположим, вы создаете пуленепробиваемую CMS для своей компании. Затраты, время и технологии не являются проблемой. У вас есть разработчики, готовые пойти со знаниями и опытом, чтобы создать выдающийся код.

Теперь вам нужно ответить на извечный вопрос CMS: какие шаги вы предпринимаете, чтобы убедиться, что код, введенный пользователем в CMS, приемлем для вашего сайта? Я думаю не только о том, чтобы технически избежать строки, чтобы она могла перейти в база данных - существуют соображения по стандартам w3, фильтрации нежелательного контента, правописанию и таким головоломкам, как очистка кода Microsoft Word. Конечно, есть проблемы, которые я упустил...

Author: bpeterson76 , 2010-08-06

3 answers

Я думаю, что вопрос здесь в следующем:

"Как мне получить именно то, что я хочу от мои пользователи, делая ввод абсурдно легким для них"

Единственный случай, когда я вижу, что пользователям действительно нужно использовать HTML напрямую в той или иной форме ввода, - это когда/если они форматируют табличные данные. Однако в этом случае гораздо проще предоставить им форму, которая может делать то же самое, или любую из популярных сеток, доступных в различных библиотеках.

Я думаю, что золотое правило, в по крайней мере, для меня, используйте систему разметки, которая не является HTML, которую ваши обработчики форм могут затем использовать для создания красивого, соответствующего стандартам и семантически правильного HTML.

Сканеры сторонних производителей могут (обычно) обнаруживать большинство проблем с загруженными файлами. Лично мне нравится ClamAV, который доступен как для *nix, так и для Windows.

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

Еще одна вещь, которую вам нужно сделать, это просмотреть любой контент, который они отправляют, человек должен принять в этом какое-то участие, иначе что-то будет упущено. Подходит ли этот образ? Ведет ли эта ссылка к вредоносному ПО или чему-то еще, на что вы предпочли бы не ссылаться? И т.д.

Предоставление механизма пометки помогает, но всегда неэффективно. Например, если вы дадите ответ на вопрос двухлетней давности о stackoverflow.com, вопрос сразу же попадает на первую полосу где сообщество обязательно рассмотрит то, что только что было добавлено. Не все системы разработаны с учетом такого рода гарантий.

Если вы делаете значительный объем, когда речь заходит о контенте, предоставленном пользователями, вам, вероятно, стоит потратить время на изучение использования подрядчиков, которые просто просматривают материалы, чтобы убедиться, что неподходящие материалы/ссылки быстро отсеиваются. Или, возможно, вы можете заручиться помощью своего сообщества пользователей (если таковое существует), чтобы сделать то же самое в обмен на какую-то особые привилегии или дополнительные льготы, которыми обычные пользователи не пользуются.

 1
Author: Tim Post, 2010-08-06 15:57:42

Я бы ответил на это, превратив его в нечто большее, чем "Какие инструменты мне нужно реализовать", поскольку тогда вы можете начать думать о наборе утилит, инструментов и плагинов, которые вы можете использовать для реализации мер предосторожности.

Такие вещи, как TinyMCE для сложного ввода, так как в нем есть функция "вставить из слова", которая идеально подходит для устранения множества проблем с символами слов.

Я заметил, что вы говорите "Код, введенный в cms", так что мы говорим о реальном коде, а не о содержимом? Как это на мой взгляд, это немного изменило бы ландшафт приложения.

В противном случае я согласен с комментарием джессегавина, на этот вопрос может быть много и много ответов. Должен признаться, я не совсем понимаю вопрос в его нынешнем виде. Как сам разработчик, эти гарантии - это то, что я бы все равно кодировал при создании CMS.

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

 0
Author: David Yell, 2010-08-06 15:50:33

Ну, если бы я создавал CMS (и, на самом деле, я это сделал) Мне было бы все равно, какой контент был введен в него, если бы этот контент можно было хранить и извлекать. В задачу системы управления контентом не входит переосмысление того, что приемлемо, а что нет, поскольку это зависит от использования.

Все, что вам нужно сделать, это убедиться, что контент модерируется (т. Е. проходит процесс утверждения рабочего процесса). Вот почему у вас есть редакторы контента, чья работа заключается в том, чтобы просматривать контент, который введите, а затем решите, что следует опубликовать, что следует отклонить и что нужно привести в порядок. Хотя программно привести в порядок содержимое WYSIWYG относительно легко, требуется человек, чтобы действительно решить, подходит ли контент для публикации.

Никогда не позволяйте пользователям вводить контент непосредственно на ваш сайт - всегда просматривайте его.

 0
Author: Dan Diplo, 2010-08-06 19:04:44