Как мне избежать содержимого, которое может содержать кавычку? - PullRequest
0 голосов
/ 18 декабря 2008

Я хочу записать свои условия поиска и передать их в переменную JavaScript, но я не знаю, как обрабатывать кавычки, которые могут прийти.

Вот что у меня сейчас:

var searchTerms = "<!--#echo var="terms"-->";
var pattern = / /g;
newSearchTerms = searchTerms.replace(/[^a-zA-Z 0-9]+/g,'');
var searchStr=newSearchTerms.replace(pattern,"_");

Я обеспокоен тем, что если «термины» содержат двойные кавычки (или апострофию, если я использую одинарные кавычки в JS), тогда моя функция не будет выполнена.

Как мне избежать строки, прежде чем она попадет в сценарий?

Спасибо,
Стив


Редактировать / ответить. Я закончил тем, что сделал это, переместив его во внешний скрипт, который захватывал и анализировал строку запроса, а не отображал ее в HTML.

Ответы [ 3 ]

3 голосов
/ 18 декабря 2008

Если terms содержит кавычки, к тому времени, как вы сделали var searchTerms = "<!--#echo var="terms"-->";, уже слишком поздно заменить любые кавычки, ваш JavaScript будет недействительным. Например, если terms содержит Это "термины" , ваш JavaScript будет выглядеть следующим образом (и приведет к синтаксической ошибке в браузере):

var searchTerms = "These are the "terms"";

Если вы уверены, что terms содержит только двойные кавычки, вы можете сделать:

var searchTerms = '<!--#echo var="terms"-->';

Если он может содержать как одинарные, так и двойные кавычки, вам необходимо санировать выходные данные на сервере, используя более сложную технологию на стороне сервера, чем <!--#echo var="..."-->.

2 голосов
/ 18 декабря 2008

Из вашего кода похоже, что вы используете Apache SSI включает. SSI echo имеет атрибут encoding, который позволит вам указать кодировку в стиле url. Вы можете закодировать кавычки таким образом и просто удалить код в Javascript с помощью unescape()

Попробуйте это:

var terms = "<!--#echo encoding="url" var="terms"-->";
terms = unescape(terms)
1 голос
/ 18 декабря 2008

Я бы добавил JavaScript к событию onchange для текстового поля поиска. захватывать нажатие клавиши и игнорировать кавычки и любые другие специальные символы, которые могут быть введены. если входные данные поступают со стороны сервера, то очистите их перед отправкой в ​​сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...