Способы вставить JavaScript в URL? - PullRequest
12 голосов
/ 01 апреля 2009

Дубликат:

О каких типичных веб-эксплойтах я должен знать?

Это секретный вопрос.

Что я должен искать в URL, который предотвращает взлом?

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

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

Есть хорошие сообщения на эту тему?

Ответы [ 9 ]

3 голосов
/ 31 июля 2014

старый вопрос, на который я наткнулся, который, я считаю, заслуживает обновления ... Вы можете повлиять на выполнение 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 голосов
/ 01 апреля 2009

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

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

2 голосов
/ 01 апреля 2009

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

javascript:;alert(window.document.body.innerHTML);
javascript:;alert(window.document.body.childNodes[0].innerHTML);
0 голосов
/ 15 ноября 2015

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

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

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

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

0 голосов
/ 10 марта 2012

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

0 голосов
/ 01 апреля 2009

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

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

0 голосов
/ 01 апреля 2009

Javascript в URL не будет выполнен сам по себе. Это ни в коем случае не означает его безопасность или доверие.

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

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

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

OWASP

Шпаргалка XSS

Шпаргалка по профилактике XSS

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

0 голосов
/ 01 апреля 2009

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

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

0 голосов
/ 01 апреля 2009

Зависит от вашего приложения и уровня его безопасности.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...