Pull to refresh
20
0
Aleksandr Dunay @dunai12

Фронтендер

Send message

Ну да, вы правы, это скорее заслуга не разработчиков браузеров, а разработчиков спецификации. Но как я понимаю этот пункт с поведением тега script при добавлении его через innerHTML в спецификации тоже не сразу появился, а только с выпуском HTML5.

Спасибо, хороший поинт с нэймингом, поправлю обязательно. И добавлю про Self XSS, совсем про него забыл, хоть это и сложно считать настоящей XSS уязвимостью, но знать полезно.

Имеется ввиду вот такая конструкция:
`const [four] = useState(twoSquared());`

то есть twoSquared() будет вызываться на каждый ререндер и если хочется этого избежать, то можно обернуть вызов функции в колбэк:

`const [nine] = useState(() => twoSquared());`

и в татом случае twoSquared() вызовится всего один раз

Теперь допустим, что злоумышленнику удастся внедрить JavaScript-код на страницу веб-приложения. У любого пользователя, который теперь зайдет на эту страницу, будет исполняться в браузере JavaScript-код. Он будет читать значение cookie этого пользователя (теперь уже жертвы). Осталось только передать это значение злоумышленнику — и дело сделано. Но как передать значение, ведь вредоносный код исполняется в браузере жертвы?

Все довольно просто. Этот же JavaScript-код может создать AJAX-запрос на удаленный сервер. Например, на вот такой URL: www.zloy-site.ru/stolen={значение_cookie_жертвы}

Тут наверно стоит уточнить, что это возможно, только если авторизационная кука не имеет флага HttpOnly, если установить такой флаг, то доступа к куке из js не будет и соответственно вредоносный скрипт не сможет добавить ее к своему вредоносному запросу.

Блин, кажется я понял о чем ты, ты прав, спасибо!

По всем пунктам согласен, спасибо! Кроме последнего, если бы setState был синхронный, то он вызывался внутри цикла, синхронно менял бы состояние и все внутри одной итерации цикла, потом вызывался заново и в состоянии было бы новое значение. Я так понял по формулировки вы имеете ввиду, что в замыкание проблема, но тут как раз наоборот, замыкание может решить проблему тк мы по сути создаем каждый раз новую функцию и замыкаем в ней текущее значение.

  1. Да, по сути так. А ты потом просто выбираешь, какие части этого компонента использовать в разных случаях.

  2. Имеешь ввиду, обязательно ли писать вот так <Accordion.Item> ? Нет, не обязательно, во первых ты можешь сделать деструктуризацию:

    const { Item } = Accordion

    На самом деле можно даже не делать Item как свойство Accordion

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity

Specialization

Frontend Developer
Lead
From 350,000 ₽
HTML
JQuery