Ваша name
переменная на самом деле window.name
, поскольку переменные верхнего уровня, объявленные с помощью var
, привязаны к глобальному объекту.
Спецификация HTML5 требует, чтобы window.name
a DOMString
. Это означает, что значение window.name
может быть только последовательностью символов , а не объектом.
В Chrome попытка использовать window.name
для хранения чего-либо, кроме примитивная строка будет принуждать значение к примитивной строке. Например:
window.name = {};
window.name === "[object Object]"; // true
Вы можете избежать этой проблемы, используя переменную name
, которая не находится в области верхнего уровня:
(function() {
var name = {};
// this `name` is not `window.name`
// because we're not in the top-level scope
console.log(name);
})();
Это - техника, которую я нашел очень полезным..
Предотвращают нападения Отказа в обслуживании (DOS) в Вашем веб-приложении
Независимо от того, что Вы делаете против DoS-атак, думайте, может ли то, что Вы делаете, на самом деле увеличить загрузку, требуемую обрабатывать злонамеренные или нежелательные запросы!
при использовании Linux затем, необходимо прочитать эту статью:
Основанный на правилах сценарий оболочки предотвращения DoS-атак (от Linux Gazette) Это имеет следующие темы:
, Применяющий это, правильно не ограничивая число заблокированного дюйм/с в iptables, может введение Уязвимость DOS путем увеличения requiered ресурсов до handel незапрашиваемых запросов. К уменьшает то использование риска ipset для соответствия IP-адресам в iptables.
кроме того, считайте приблизительно ssh предотвращение атаки с подбором по словарю с помощью iptables. (включающий iptables с брандмауэрингом с сохранением информации, как предложено здесь не защищает от большинства DoS-атак против, но может на самом деле простота DoS-атаки, которые загрязняют Вашу RAM бесполезной информацией состояния)
В новинку для Linux? читайте дорожная карта Windows к Linux: Часть 5. Linux, регистрирующий из IBM.
Удачи!
Моя первая попытка решить уязвимость DoS использовала подход, предложенный Gulzar, который должен в основном ограничить количество вызовов, позволенных от того же IP-адреса. Я думаю, что это - хороший подход, но к сожалению, это заставило мой код приводить тест производительности к сбою.
, Так как я не мог заставить группу теста производительности изменять их тест (политическая проблема, не техническая), я изменился на ограничение количества вызовов, позволенных во время настраиваемого интервала. Я сделал и максимальное количество вызовов и временной интервал настраивающимися. Я также позволил устанавливать значение 0 или отрицательное число, которое отключает пределы.
код, который должен был быть защищен, используется внутренне несколькими продуктами. Так, у меня была каждая группа продуктов, выполняет их QA и комплекты теста производительности и придумал значения по умолчанию, которые должны были как можно меньше ограничить реальную DoS-атаку, но все еще прошли все тесты.
FWIW, временной интервал составлял 30 секунд, и максимальное количество вызовов равнялось 100. Это не абсолютно удовлетворительный подход, но это просто и практично и было утверждено командой корпоративной безопасности (другое политическое соображение).