jQuery анализирует строку htmlspecialchars() как текст

Я столкнулся с проблемой. Я создаю приложение Ajax с PHP и очищаю свои входные данные с помощью htmlspecialchars(). Затем я обрабатываю введенную строку и использую ее для установки атрибутов данных определенных элементов html. Вот моя проблема.

Скажем так, пользователь написал <html>. Этот ввод с помощью htmlspecialchars() будет преобразован в &lt;html&gt;. Теперь это нормально для отображения содержимого, но для атрибутов данных я бы хотел, чтобы они были вставлены как <html>. Это возможно?


person Someone    schedule 03.06.2013    source источник
comment
Что вы собираетесь делать с атрибутами данных?   -  person Pekka    schedule 04.06.2013
comment
Пользователь вводит строку, я разбиваю строку и использую атрибуты данных для поиска строки.   -  person Someone    schedule 04.06.2013
comment
Дело в том, что вы, могли, конечно, воздержаться от использования htmlspecialchars() для этого конкретного случая, но тогда вы свели бы на нет безопасность, для которой вы используете санитарию в первую очередь - вы могли бы просто также прекратите использовать его на этой странице. Это, вероятно, не очень хорошая идея. Как вы ищете строку, может быть, вы можете преобразовать специальные символы обратно в этот момент?   -  person Pekka    schedule 04.06.2013
comment
Ну, я использую кнопку с атрибутами данных. Так можно ли установить данные с неэкранированным html и установить физический html кнопки с экранированным html?   -  person Someone    schedule 04.06.2013
comment
Да, так что я говорю, установите атрибуты данных с неэкранированным html и установите внутренний html кнопки с экранированным html.   -  person Someone    schedule 04.06.2013
comment
Можно использовать htmlspecialchars() для атрибутов. Браузер должен декодировать их при обработке строк атрибутов.   -  person Barmar    schedule 04.06.2013
comment
Понятно. Позвольте мне попробовать это, и я скажу вам, что происходит.   -  person Someone    schedule 04.06.2013
comment
Обратите внимание, что вам нужно использовать htmlspecialchars() только в том случае, если PHP создает HTML. Вам не нужно использовать его при передаче данных туда и обратно с помощью AJAX.   -  person Barmar    schedule 04.06.2013
comment
Итак, у меня есть php, создающий атрибуты данных. Должен ли я использовать его для этих атрибутов данных?   -  person Someone    schedule 04.06.2013
comment
Тогда мой план выше не сработает, верно?   -  person Someone    schedule 04.06.2013
comment
Я не уверен, что полностью понимаю ситуацию, поэтому я не знаю. В любом случае вы можете выполнить декодирование (при необходимости) в JavaScript: Javascript декодирование html-объектов   -  person Pekka    schedule 04.06.2013
comment
На самом деле, я только что нашел решение, создав две разные переменные на основе одного и того же ввода, одна полностью лишена всех неалфавитных символов, а другая очищена с помощью htmlspecialchars().   -  person Someone    schedule 04.06.2013


Ответы (1)


есть функция, которая меняет то, что делает htmlspecialchars:

htmlspecialchars_decode()

http://php.net/manual/en/function.htmlspecialchars-decode.php

person Ziarno    schedule 03.06.2013
comment
Ну нет, xss уязвимость - person Ziarno; 04.06.2013