2016-07-17 8 views
1

Этот вопрос относится к коду window.location = window.location как способ обновления страницы и не связан с перенаправлениями/другими переменными.Является window.location = window.location восприимчивым к XSS

Мое понимание заключается в следующем:

window.location = window.location вызывает страницы для обновления, поскольку браузер будет перемещаться в том же месте, пользователь уже на.

Любое изменение этой переменной с помощью DOM-манипуляции приведет к перезагрузке страницы/загрузке страницы злоумышленника, поэтому эти строки не смогут быть выполнены с измененным значением и, следовательно, не являются кандидатами на атаки с использованием межсайтового скриптинга.

Это правильно?

Edit: Что я действительно спрашиваю, есть ли способ изменить window.location, не вызывая перезагрузки страницы, так что тогда, когда window.location = window.location сделан вызов, браузер будет отправлен в другое место.

+0

Что делать, если кто-то открывает консоль и набирает любой произвольный код javascript? Ваш сайт уязвим, если он есть. – Gogol

+0

Если вы делаете это 'window.location = window.location', и страница перезагружается ... то то же самое произойдет снова ... и вы войдете в бесконечный цикл. –

+0

@ Al.G. Я думаю, что это разумно безопасно предположить, что это не будет вызвано на загрузку страницы. – charlietfl

ответ

1

Проблема не имеет ничего общего с window.location и все, что связано с обработкой произвольных данных, используемых в новом контексте.

Если вы берете ввод с URL-адреса и используете его для создания нового URL-адреса для перенаправления, то вы открываете проблемы. Возьмите классическую страницу редиректа ...

http://example.com/redirect?url=http%3A%2F%2Fsomethingevil 

Если JavaScript на странице, которая затем устанавливает window.location к значению параметра строки запроса url, то страница будет идти на http://somethingevil.

Основной способ XSS заключается в том, чтобы позволить параметрам строки запроса вводить данные в саму страницу. Например, у вас может быть страница с надписью «Hello Brad», где «Brad» появился из URL-адреса с именем name. Теперь предположим, что атакующий вместо этого устанавливает URL-адрес name=%3Cscript%20src%3D%22http%3A%2F%2Fexample.com%2Fevil.js%22%3E%3C%2Fscript%3E. Если я просто добавлю значение name непосредственно на страницу, тогда мой скрипт evil.js будет запущен на этой странице. Если вместо этого я избегаю данных правильно, тогда он может использоваться на странице, поскольку он будет интерпретироваться как текст.

+0

Я действительно спрашиваю, есть ли способ изменить 'window.location', не вызывая перезагрузки страницы, так что тогда, когда будет выполнен вызов' window.location = window.location', браузер будет отправлен на другое место. – Milk

+0

@ Милк я не понимаю? Зачем вам это делать, и что это связано с XSS? – Brad

+1

Линия кода, о которой идет речь, была поднята сканированием безопасности как потенциальный эксплойт для межсайтового скриптинга посредством манипуляций с DOM. Я не думал, что можно использовать эту линию таким образом. Таким образом, вопрос. – Milk

Смежные вопросы