Если вы используете jQuery на своем веб-сайте, вы можете просто переназначить $
, что приведет к уничтожению любого кода, который использует его напрямую:
Да, вы можете защитить его, убедившись, что jQuery правильно введен в каждый скрипт, который в этом нуждается. Это было довольно распространенным явлением, когда несколько библиотек могли захватить глобальный $
, поэтому вы должны убедиться, что переменная $
верна:
Однако в последнее время это немного утратило популярность - обычно просто jQuery использует $
, поэтому вам не всегда нужно его защищать. Вы уверены, каждая строка, где у вас есть $
, не является глобальной?
Если да, то вот следующая атака, такая же простая, как эта:
const someJSON = '{ "name" : "Fred", "age" : 42 }';
const obj = JSON.parse(someJSON); //boom!
console.log(obj.name);
<SCRIPT>JSON = "I COME FROM EVIL INPUT"</SCRIPT>
Используете ли вы AJAX для связи с сервером? Или попытаться получить вещи из localStorage? Ну, я очень сомневаюсь, что вы столь же защищены от JSON
, как от $
, и я сомневаюсь, что у вас есть собственные читатели JSON.
Я надеюсь, что вы можете видеть шаблон сейчас - все, что прикреплено к window
и все заглавные буквы, могут быть нацелены и, таким образом, наносить вред приложению.
У меня мало сомнений в том, что все заглавные буквы JS можно манипулировать для получения строчных букв. Я не могу думать о том, как сейчас, но когда злоумышленник поймет это, вы можете ожидать еще более грубых, но эффективных вещей: