Мы обсуждали только клиентское решение в javascript, которое предоставляет посетителю сайта возможность аннотировать страницу для печати и ее эксплуатационную пригодность с точки зрения XSS или аналогичного вектора атаки.XSS без участия сервера - это опасно?
Обоснование: существует потенциально длительный процесс выбора данных для отображения. Чтобы документировать сделанные шаги, текст textarea (без включения формы) предусматривает, что пользователь может написать произвольный текст, который не должен быть передан на сервер. Исходный текст является статическим, например. короткий набор инструкций, как использовать это поле, чтобы не было (очевидной) возможности для злоумышленника построить URL-адрес, содержащий вредоносный javascript для этого текстового поля.
После того, как пользователи меняют этот текст, они печатают страницу (и их заметки). Заметки теряются, когда пользователь покидает страницу.
В случае «слишком много ошибок прозы» здесь пример кода:
<span id="descriptionHeader">Description of the result</span>
<div id="description">
<textarea id="descriptionEditor" rows="15" cols="80" type="text"
ondblclick="replaceDescription()">
Edit this text to add a detailed description to this page.
Double click to this editing area to finish editing.
If you want to edit the text again, do a double click to the
description header.
You may use html (e.g. <br>) for formatting.
</textarea>
</div>
<script type="text/javascript">
var header = getElem("descriptionHeader");
var editor = getElem("descriptionEditor");
var description = getElem("description");
function empty() {
}
function editDescription() {
header.ondblclick = empty;
editor.value = description.innerHTML;
description.innerHTML = "";
description.appendChild(editor);
}
function replaceDescription() {
header.ondblclick = editDescription;
description.removeChild(editor);
description.innerHTML = editor.value;
}
</script>
снова:
- текст никогда не обрабатываются на стороне сервера, только статическое описание ("как use ") всегда отправляется с сервера на клиент, а не с клиента на сервер.
- Пользователь может добавлять элементы javascript по своему усмотрению и использовать ад из себя.
- Я не могу думать о сценарии, где это будет представлять угрозу безопасности, но тошнотворное чувство остается ...
Примечание: Речь идет не о элегантности этого решения или любой библиотеке, которая делает встроенное редактирование более комфортно, но исключительно о возможных рисках безопасности - если есть.
Ницца - Я еще не учитывал этот угол. Спасибо –
Большое спасибо - также за ваши комментарии к ответам bobinces. Это должно помочь продолжить обсуждение, предоставляя «низкое воздействие» и простое решение для таких тем. –
На самом деле просмотр в прямом эфире страдает от такой же самозащиты, поскольку он не фильтруется так же тщательно, как на стороне сервера (например, вы можете ввести javascript в ответах/вопросах, которые будут экранированы при отправке, но не в предварительном просмотре. такая же проблема, как я заявил здесь :) –