Санировать пользовательский ввод для отображения и разрешить все символы? - PullRequest
0 голосов
/ 03 июля 2010

Мне нужно иметь возможность безопасно отображать введенный пользователем текст в 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

Я предполагаю, что что-то пошло не так в процессе кодирования / декодирования ...

Ответы [ 2 ]

2 голосов
/ 03 июля 2010

Чтобы данные были безопасными для отображения на странице, вам нужно только экранировать < и > и заменить их &lt; и &gt; соответственно.И MySQL сбрасывается как обычно при сохранении в базу данных.Я не понимаю, зачем вам нужны все регулярные выражения, как сейчас.

1 голос
/ 31 августа 2013

Я знаю, что эта ветка старая и неактивная, но я понимаю, что просто экранирования "<" и ">" недостаточно. Этого даже недостаточно, чтобы избежать пяти основных символов HTML. Подробнее см. http://wonko.com/post/html-escaping.

...