уценка до HTML с помощью настраиваемого редактора WMD - PullRequest
1 голос
/ 05 декабря 2009

Для своего приложения я немного настроил поведение WMD, поэтому, когда пользователь вводит пустые строки, они отображаются в выводе HTML как <br />'s. Теперь я пришел к моменту, когда я должен хранить его где-нибудь в бэкэнде, и поэтому, пройдя некоторое время через SO сообщения, я не уверен, что это лучший способ сделать это. У меня есть несколько вариантов, и если вы могли бы указать, какие их плюсы / минусы, которые будут высоко оценены.

  1. отправить на сервер и сохранить как уценку, а не как HTML. Для меня очевидным преимуществом было бы сохранение точно такого же форматирования, которое изначально вводил пользователь. Но тогда как я могу преобразовать его обратно в HTML для отображения клиенту? Кажется очень проблематичным преобразовать его на стороне клиента, даже если бы было возможно, что бы произошло, если бы JS был отключен? Если бы я хотел сделать это на сервере, то стандартные реализации разметки для HTML на стороне сервера могли бы быть дорогостоящими. Будет ли это проблемой по вашему мнению? Даже если бы это было не так, как я уже говорил, моя реализация WMD настроена, и эти серверные решения, вероятно, в любом случае не будут выполнять правильное преобразование в уценку, и всегда будет риск того, что что-то будет преобразовано неправильно.

  2. Отправить на сервер в виде преобразованного HTML. То же, что и выше ... преобразование на стороне клиента будет затруднено, на стороне сервера - то же самое с возможностью ошибиться.

  3. отправить оригинальную уценку и преобразованный HTML и сохранить оба. Нет проблем с производительностью, связанных с преобразованием уценки в HTML на стороне клиента или на стороне сервера. У пользователей всегда будет та же самая уценка, которую они первоначально вводили, и тот же HTML, который они первоначально видели в предварительном просмотре (хотя, возможно, очищенный в php). Хотя для этого потребовалось бы вдвое больше места для хранения, и это мое самое большое беспокойство.

Я склоняюсь к третьему решению, так как оно кажется самым простым, но есть опасения, что для этого решения потребуется удвоенное пространство для хранения. Пожалуйста, имейте в виду, что моя реализация WMD немного изменена, а также я собираюсь реализовать PHP / MySql на стороне сервера.

Итак, кроме 3-х вариантов, которые я перечислил выше, есть ли другие возможные решения моей проблемы? Я упустил что-то важное, что сделало бы один из вариантов выше, чем остальные? И какие еще плюсы / минусы применимы к каждому из перечисленных мной решений? И как это реализовано на SO? Я где-то читал, что они используют вариант 3, и поэтому, если он достаточно хорош для SO, будет достаточно для меня :), но я не уверен, если это так или иначе, так как это делается?

Также, пожалуйста, прости меня, но по крайней мере на этот раз я должен сказать, что StackOverflow - ЛУЧШИЙ ЧЕРТЫЙ РЕСУРС В СЕТИ, и я действительно ценю всех людей, которые пытаются помочь другим здесь! Сайт и пользователи здесь просто потрясающие!

Ответы [ 2 ]

2 голосов
/ 05 декабря 2009

Отправить на сервер как уценка или как преобразованный HTML

Одной из причин принятия уценки вместо HTML от клиента является то, что принятие произвольного HTML от клиента представляет собой угрозу безопасности: если вы принимаете HTML, то клиент может отправить вам HTML с вредоносным кодом, который вы сохраните, а затем передадите назад (возможно, другому клиенту: таким образом, вы отправляете вредоносный код другому клиенту). По этой причине может быть лучше принять от клиента только уценку (не HTML).

Если бы я хотел сделать это на сервере, то стандартные реализации разметки для HTML на стороне сервера могли бы быть дорогостоящими. По вашему мнению, это будет проблемой?

Я не знаю, что такое "стандартные реализации на стороне сервера", но я предполагаю, что это (генерирование HTML) - это тип обработки, который сервер должен уметь выполнять.

0 голосов
/ 05 декабря 2009

4-й. можно сохранить уценку и отобразить уценку в HTML, используя библиотеку на стороне сервера, когда она запрашивается, а затем использовать кэширование для предотвращения снижения производительности.

Комментарий к проблеме безопасности от ChrisW - это действительно важный момент, чтобы позаботиться о том, чтобы очистить этот вход. Однако, не делайте ошибку, предполагая, что уценка также безопасна. Судя по тому, что я видел в WMD и его процессоре showdown.js, вы все равно можете кормить его HTML, и он оставит его там. Так что кто-то, использующий редактор WMD, может по-прежнему указывать в <script> или в любом другом месте.

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

...