Как кодировать значение, которое отображается на странице и, наконец, используется в URL? - PullRequest
0 голосов
/ 28 июля 2010

У меня есть скрипт, который отображается на html-странице как часть решения для отслеживания (etracker).

Это примерно так:

<script>
var et_cart= 'nice shoes,10.0,100045;nice jacket,20.00,29887';
</script>

Это будет передано на сервер решения для отслеживания с помощью некоторого JavaScript, который я не контролирую. Это закончится как 2 пункта. Элементы разделяются точкой с запятой в источнике (после '100045').

Мне, очевидно, нужно Html-кодировать и Javascript-кодировать значения, которые будут отображаться. Сначала я Html-кодирую, а после этого удаляю одинарные кавычки.

Это работает, но у меня есть проблема со специальными символами на французском и немецком, например. умлаут (ü, ä ...). Они делают что-то вроде {. Вывод скрипта при использовании lars ümlaut в качестве статьи:

<script>
var et_cart= 'lars &#123;mlaut,10.0,100045;nice jacket,20.00,29887';
</script>

С помощью решения для отслеживания точка с запятой оценивается как разделитель элементов.

Поддержка решения для отслеживания сказала мне, чтобы url-кодировать значения. Может ли это работать? Я думаю, URL-кодирование не останавливает xss-атаки. Можно ли сначала кодировать URL и кодировать html, а затем кодировать javascript?

1 Ответ

0 голосов
/ 28 июля 2010

Значения должны быть только в кодировке URL для передачи клиенту. Если информация отображается клиентом, он обязан убедиться, что он защищает себя от xss-атак, а не от ваших.

<script>
var et_cart= 'lars+%FCmlaut%2C10.0%2C100045%3Bnice+jacket%2C20.00%2C29887';
</script>
...