Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.02.2015, 16:45
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

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

Но что-то он мне совсем не нравится, какие есть лучше варианты?
Спасибо за помощь и ваше время.
Ответить с цитированием
  #2 (permalink)  
Старый 17.02.2015, 17:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Все что вводит пользователь при помещении базу не стоит подвергать таким варварским изменениям - в базе могут храниться любые "колющие и режущие" предметы. А вот при выводе данных пользователю, данные обрабатываются функцией htmlspecialchars(), и никакой js-сценарий не выполниться, и не будет "разбита" html-структура.
Ответить с цитированием
  #3 (permalink)  
Старый 17.02.2015, 17:40
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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

value = value.replace(/[&<>"']/gm, function(m) {
    return charsMap[m];
});
Ответить с цитированием
  #4 (permalink)  
Старый 17.02.2015, 17:40
Аватар для Armen
Кандидат Javascript-наук
Отправить личное сообщение для Armen Посмотреть профиль Найти все сообщения от Armen
 
Регистрация: 28.06.2009
Сообщений: 120

Сообщение от laimas Посмотреть сообщение
Все что вводит пользователь при помещении базу не стоит подвергать таким варварским изменениям - в базе могут храниться любые "колющие и режущие" предметы. А вот при выводе данных пользователю, данные обрабатываются функцией htmlspecialchars(), и никакой js-сценарий не выполниться, и не будет "разбита" html-структура.
htmlspecialchars - это если я не ошибаюсь php? то есть вы хотите сказать, что все эти манипуляции с кодированием и декодирование должен делать сервер, а на js - не нужно заморачиватся?
Ответить с цитированием
  #5 (permalink)  
Старый 17.02.2015, 17:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Armen
декодирование должен делать сервер
Какое еще декодирование?
При выводе данных их нужно экранировать. При генерации html - экранируй выводимые данные. Если ты в последующем получаешь с сервера данные через ajax - то их наверное нужно экранировать джаваскриптом перед вставкой на страницу (это только если через innerHTML вставлять).
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 17.02.2015, 17:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
filter(this,this) как правильно сделать? Smip jQuery 5 23.02.2013 03:07
Не правильно работает прокрутка, подскажите как сделать правильно? denfer12 Общие вопросы Javascript 0 09.05.2012 00:34
Как сделать в админке javascript AquaGen Общие вопросы Javascript 1 16.12.2011 08:38
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34