Способы вставки javascript в URL?

Дубликат:

Какие общие веб-эксплоиты я должен знать?

Это вопрос безопасности.

Что следует искать в URL-адресе, который предотвращает хакинг?

Есть ли способ выполнить javascript, передав его внутри URL-адреса?

Как вы можете видеть, я довольно новичок в этой концепции.

Любые хорошие посты на этом материале?

Ответ 1

Я не верю, что вы можете взломать URL. Кто-то может попытаться ввести код в ваше приложение, если вы передаете параметры (GET или POST) в ваше приложение, чтобы ваше избегание было очень похоже на то, что вы сделали бы для локального приложения.

Убедитесь, что вы не добавляете параметры в SQL или другие script исполнения, которые были переданы в код из браузера, не убедившись, что строки не содержат языка script. Найдите следующую информацию о атаках инъекций для платформы разработки, с которой вы работаете, что должно дать много хороших советов и примеров.

Ответ 2

старый вопрос, который я наткнулся на то, что, как я считаю, заслуживает обновления... Вы можете ввести javascript из URL-адреса, и вы тоже можете получить от него творческий подход. Недавно я создал группу, в которой я хотел напомнить кому-то, что у них есть, поэтому я искал нелокальное предупреждение... конечно, вы можете встроить оповещение в самую страницу, но затем ее публикацию. разница здесь заключается в том, что я могу создать ссылку и пропустить некоторую JS в href, поэтому при нажатии на ссылку будет генерироваться предупреждение.

вот что я имею в виду →

<a href="javascript:alert('the secret is to ask.');window.location.replace('http://google.com');">You can have anything</a>

и поэтому, щелкнув ссылку, пользователю дается предупреждение с информацией, затем они переходят на новую страницу.

очевидно, что вы также можете написать onClick, но href отлично работает, когда вы проскальзываете его через URL-адрес, просто не забудьте добавить его с помощью "javascript:"

* работает в chrome, ничего не проверял.

Ответ 3

Javascript может быть выполнен против текущей страницы, просто поместив его в URL-адрес, например.

javascript:;alert(window.document.body.innerHTML);
javascript:;alert(window.document.body.childNodes[0].innerHTML);

Ответ 4

Это зависит от вашего приложения и его использования в отношении уровня безопасности, который вам нужен.

С точки зрения безопасности вы должны проверить все значения, которые вы получаете из параметров запроса или сообщения, чтобы убедиться, что они действительны.

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

Я не считаю возможным вставлять javascript в URL-адрес и выполнять этот запуск, если ваше приложение не использует параметры, не проверяя их в первую очередь.

Ответ 5

Ключом к этому является проверка любой полученной вами информации, а затем отображение и/или использование кода на сервере. Получить/Опубликовать переменные формы, если они содержат javascript, который вы храните, а затем повторно отображаете угрозу безопасности. Как и любая вещь, которая объединяется, не подвергается анализу в запросе sql, который вы запускаете.

Один потенциальный способ, на который нужно следить, - это атаки, которые воюют с кодировкой символов. Например, если я отправляю форму с набором символов utf-8, но вы сохраняете и позже показываете на латинском языке iso-8859-1 без перевода, я мог бы пропустить что-то мимо вашего валидатора. Самый простой способ справиться с этим - всегда отображать и хранить в том же наборе символов. utf-8 обычно является хорошим выбором. В этом случае никогда не зависеть от браузера, чтобы сделать для вас правильные вещи. Установите явные наборы символов и изучите полученные множители символов и сделайте перевод в ожидаемый набор хранилища, прежде чем его проверить.

Ответ 6

Javascript в URL-адресе не будет выполнен сам по себе. Это никоим образом не означает, что он безопасен или заслуживает доверия.

URL-адрес - это другой пользовательский ввод, которому нельзя доверять, GET или POST (или любой другой метод, если на то пошло) могут привести к серьезным уязвимостям.

Общим примером было/это использование PHP_SELF, REQUEST_URI, SCRIPT_NAME и подобных переменных. Разработчики ошибочно отозвали их непосредственно в браузер, что привело к тому, что script был введен в страницу и выполнен.

Я бы посоветовал вам начать делать чтение, это хорошие места для начала:

OWASP

XSS Cheat Sheet

Прошивка для предотвращения XSS

Также google для XSS (межсайтовый скриптинг), XSRF (подпрограмма запроса на межсайтовый запрос) и SQL Injection. Это поможет вам начать работу, но это часть информации для поглощения, поэтому не спешите. Это будет стоить в конечном итоге.

Ответ 7

JavaScript-инъекция не атакует ваше веб-приложение. JavaScript-инъекция просто добавляет код JavaScript для выполнения браузера. Единственный способ, которым JavaScript может нанести вред вашему веб-приложению, - это если у вас есть запись в блоге или какая-либо другая область, в которой хранится пользовательский ввод. Это может быть проблемой, потому что злоумышленник может ввести свой код и оставить его там для других пользователей. Эта атака известна как Cross-Site Scripting. Худшим сценарием будет Cross-Site Forgery, который позволяет злоумышленникам вводить инструкцию, которая украдет файл cookie пользователя и, следовательно, даст злоумышленнику их идентификатор сеанса.

Ответ 8

Я верю, что правильный ответ - "это зависит".

Как указывали другие, если веб-приложение, которое обрабатывает ваш запрос, наивно получает и отсылает обратно полученные значения полезной нагрузки или URL-адреса (для запросов GET), то это может быть подвергнуто инъекции кода.

Однако, если веб-приложение санирует и/или фильтрует полезную нагрузку/параметры, это не должно быть проблемой.

Он также зависит от пользовательского агента (например, браузера), настраиваемый пользовательский агент может вводить код без уведомления пользователя, если он обнаруживает какой-либо запрос (не знаю какого-либо публичного, но это также возможно).

Ответ 9

Если ссылка имеет javascript:, тогда она будет запускать javascript, иначе я согласен со всеми остальными здесь, там нет способа это сделать.

SO достаточно умен, чтобы отфильтровать это!