Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно сделать кодировку символов на JavaScript? (https://javascript.ru/forum/misc/53770-kak-pravilno-sdelat-kodirovku-simvolov-na-javascript.html)

Armen 17.02.2015 16:45

Как правильно сделать кодировку символов на JavaScript?
 
Здравствуйте, подскажите пожалуйста.
Хочу закодировать символы перед отправкой данных на сервер и так же во время получения данных с сервера.
То есть, чтоб пользователь не ввел javascript и он не отработал, а так же, чтоб с сервера не пришел js и не выполнился в браузере.
Как вариант:
value.split('<').join('&lt;');

Но что-то он мне совсем не нравится, какие есть лучше варианты?
Спасибо за помощь и ваше время.

laimas 17.02.2015 17:37

Все что вводит пользователь при помещении базу не стоит подвергать таким варварским изменениям - в базе могут храниться любые "колющие и режущие" предметы. А вот при выводе данных пользователю, данные обрабатываются функцией htmlspecialchars(), и никакой js-сценарий не выполниться, и не будет "разбита" html-структура.

ruslan_mart 17.02.2015 17:40

var charsMap = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    '\'': '&#039;'
};

value = value.replace(/[&<>"']/gm, function(m) {
    return charsMap[m];
});

Armen 17.02.2015 17:40

Цитата:

Сообщение от laimas (Сообщение 357016)
Все что вводит пользователь при помещении базу не стоит подвергать таким варварским изменениям - в базе могут храниться любые "колющие и режущие" предметы. А вот при выводе данных пользователю, данные обрабатываются функцией htmlspecialchars(), и никакой js-сценарий не выполниться, и не будет "разбита" html-структура.

htmlspecialchars - это если я не ошибаюсь php? то есть вы хотите сказать, что все эти манипуляции с кодированием и декодирование должен делать сервер, а на js - не нужно заморачиватся?

danik.js 17.02.2015 17:45

Цитата:

Сообщение от Armen
декодирование должен делать сервер

Какое еще декодирование?
При выводе данных их нужно экранировать. При генерации html - экранируй выводимые данные. Если ты в последующем получаешь с сервера данные через ajax - то их наверное нужно экранировать джаваскриптом перед вставкой на страницу (это только если через innerHTML вставлять).

laimas 17.02.2015 17:57

htmlspecialchars - это если я не ошибаюсь php?

Не ошибаетесь. Но вам задали вопрос Какое еще декодирование?, так какое? Если вы опасаетесь получение данных с сервера, которые могут разрушить html-структуру документа или выполнить сценарий нежелательный, то для этого как раз и служит htmlspecialchars, и коли он выдает клиенту контент, то в его задачу и входит такое преобразование - при выводе.

Если же у вас иная задача, и все манипуляции на клиенте, то описывайте задачу, чтобы было понятно, что за необходимость такая в каком-то кодировании. ДА и к кодированию это отношения не имеет.


Часовой пояс GMT +3, время: 11:02.