Как правильно сделать кодировку символов на JavaScript?
Здравствуйте, подскажите пожалуйста.
Хочу закодировать символы перед отправкой данных на сервер и так же во время получения данных с сервера. То есть, чтоб пользователь не ввел javascript и он не отработал, а так же, чтоб с сервера не пришел js и не выполнился в браузере. Как вариант: value.split('<').join('<'); Но что-то он мне совсем не нравится, какие есть лучше варианты? Спасибо за помощь и ваше время. |
Все что вводит пользователь при помещении базу не стоит подвергать таким варварским изменениям - в базе могут храниться любые "колющие и режущие" предметы. А вот при выводе данных пользователю, данные обрабатываются функцией htmlspecialchars(), и никакой js-сценарий не выполниться, и не будет "разбита" html-структура.
|
var charsMap = { '&': '&', '<': '<', '>': '>', '"': '"', '\'': ''' }; value = value.replace(/[&<>"']/gm, function(m) { return charsMap[m]; }); |
Цитата:
|
Цитата:
При выводе данных их нужно экранировать. При генерации html - экранируй выводимые данные. Если ты в последующем получаешь с сервера данные через ajax - то их наверное нужно экранировать джаваскриптом перед вставкой на страницу (это только если через innerHTML вставлять). |
htmlspecialchars - это если я не ошибаюсь php?
Не ошибаетесь. Но вам задали вопрос Какое еще декодирование?, так какое? Если вы опасаетесь получение данных с сервера, которые могут разрушить html-структуру документа или выполнить сценарий нежелательный, то для этого как раз и служит htmlspecialchars, и коли он выдает клиенту контент, то в его задачу и входит такое преобразование - при выводе. Если же у вас иная задача, и все манипуляции на клиенте, то описывайте задачу, чтобы было понятно, что за необходимость такая в каком-то кодировании. ДА и к кодированию это отношения не имеет. |
Часовой пояс GMT +3, время: 22:42. |