• Как обойти проверку !Number(value)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вроде бы, не получится. Никак.

    Number() при вызове как функции, конвертирует аргумент в численный тип. Если не получается, возвращает NaN (Not A Number) – специальное значение, которое при конвертации в булев даёт false.

    Т.е. (! Number(value)) сработает когда переданное не перевести в число, или когда число 0.

    Number() довольно строг с конвертацией в число, по сравнению даже с parseInt():
    parseInt("123HabraHabr") // 123
    Number("123HabraHabr")   // NaN

    Чтобы хакнуть этот бот, нужно придумать такую строку, что Number() проглотил бы как число, но при этом она содержала код, который JS как-то интерпретирует. Типа '123 & alert("Habr!")' – но нет, через Number() это не пролезет, увы.
    Ответ написан
    Комментировать