У меня есть некоторые функции javascript на моем сайте, но я не знаю, можно ли их использовать.является моей безопасной функцией xss?
вот мой код:
// works like PHP's $_GET
function get(name){
name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
regexS="[\\?&]"+name+"=([^&#]*)";
regex=new RegExp(regexS);
results=regex.exec(window.location.href);
if(results==null)
return '';
return results[1];
}
// and here is my anti xss filter
var param = unescape(decodeURI(get("q")));
param = param.replace(/<(.*?)>/gi, "");
someElement.innerHTML = param;
Можно ли обойти эти фильтры?
Это может работать в той или иной степени с помощью JS, но только до точки, в целом с любой стороны клиента, далека от доказательства или безопасности. При этом я не стал бы полагаться на 100% на любую защиту на стороне клиента. Если ваши инъекции получают переменные в innerHTML элемента, то вы хотите быть еще более осторожными, потому что кто-то может легко вводить код на вашу страницу, а затем использовать этот код, чтобы наложить на ваш сервер больше удовольствия. – chris
Я собираюсь сказать : нет, это не безопасно и просто добавляет ложное чувство безопасности, как «magic_quotes». Основная проблема с подходом «фильтр» заключается в том, что он не может быть правильным решением - правильным решением является безопасное применение данных на сайте использования *. То есть, если innerHTML не должен содержать HTML, * HTML-encode * он на сайте использования, но затем * зачем * использовать innerHTML для начала? – 2013-02-08 20:07:24
Вот пример счетчика: '? Q = '. – Gumbo