Как правильно избежать кавычек внутри атрибутов html?
У меня есть раскрывающаяся веб-страница, которая ломается, когда строка значений содержит цитату.
Значение "asd
, но в DOM всегда отображается пустая строка.
Я пробовал все, что знаю, чтобы избежать строки правильно, но безрезультатно.
<option value=""asd">test</option>
<option value="\"asd">test</option>
<option value=""asd">test</option>
<option value=""asd">test</option>
Любая идея, как сделать это на странице, чтобы сообщение postback содержало правильное значение?
Ответы
Ответ 1
"
это правильный путь, третий из ваших тестов:
<option value=""asd">test</option>
Вы можете увидеть, как это работает ниже, или на jsFiddle.
alert($("option")[0].value);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option value=""asd">Test</option>
</select>
Ответ 2
Если вы используете PHP, попробуйте вызвать htmlentities
или htmlspecialchars
.
Ответ 3
Per синтаксис HTML и даже HTML5, следующие допустимые параметры:
<option value=""asd">test</option>
<option value=""asd">test</option>
<option value='"asd'>test</option>
<option value='"asd'>test</option>
<option value='"asd'>test</option>
<option value="asd>test</option>
<option value="asd>test</option>
Обратите внимание: если вы используете синтаксис XML, нужны кавычки (одиночные или двойные).
Здесь jsfiddle показывает все вышеперечисленные работы.
Ответ 4
Другим вариантом является замена двойных кавычек одиночными кавычками, если вы не возражаете против того, что это такое. Но я не упоминаю об этом:
<option value='"asd'>test</option>
Я упоминаю это:
<option value="'asd">test</option>
В моем случае я использовал это решение.
Ответ 5
Вы действительно должны разрешать только недоверенные данные в белый список хороших атрибутов: align, alink, alt, bgcolor, border, cellpadding, cellspacing, class, color, cols, colspan, coords, dir, face, height, hspace, ismap, lang, marginheight, marginwidth, multiple, nohref, noresize, noshade, nowrap, ref, rel, rev, rows, rowspan, scrolling, shape, span, summary, tabindex, title, usemap, valign, value, vlink, vspace, ширина
Вы действительно хотите сохранить ненадежные данные из обработчиков javascript, а также атрибуты идентификатора или имени (они могут clobber другие элементы в DOM).
Кроме того, если вы помещаете ненадежные данные в атрибут SRC или HREF, то это действительно ненадежный URL-адрес, поэтому вы должны проверить URL-адрес, убедитесь, что его НЕ является URL-адресом javascript: URL, а затем кодировкой HTML.
Подробнее о всех здесь: https://www.owasp.org/index.php/Abridged_XSS_Prevention_Cheat_Sheet