Мне нужно иметь возможность безопасно отображать введенный пользователем текст в DOM, и в настоящее время я использую следующий JS для этого (он ограничивает допустимые символы).
Но теперь я быхотел бы разрешить всем персонажам.Как я могу принять все символы, но закодировать их так, чтобы пользователь не мог выполнить скрипт или сделать что-то плохое.
function displayUserInput() {
var status = $('#text_input').val();
status = stripName(status);
$.ajax({ type: 'POST', url: "api.php?status="+escape(status), success: function(data){
// success
}});
}
function stripName(name) {
var new_name = new String(name);
new_name = new_name.replace(/[^a-zA-Z0-9:\(\/\)\s\.,!~-]/g, '');
return new_name;
}
На стороне PHP я использую следующий код перед сохранением введенного пользователем текста вбаза данных:
$status_message = $_REQUEST['status'];
$status_message = preg_replace("/[^a-zA-Z0-9:\(\/\)\s\.,!~-]/", "", $status_message);
$status_message = mysql_real_escape_string($status_message);
Кажется, что мой текущий метод хорошо очищает ввод, но я хотел бы принять полный набор символов.Кроме того, я вижу некоторые проблемы, например, один введенный пользователем текстовый блок отображается как:
u0627u0644u0644u0647 u0627u0643u0628u0631u0645u0646 u0627u0645u0631u064Au0643u0627
Я предполагаю, что что-то пошло не так в процессе кодирования / декодирования ...