Распечатать код JavaScript из внешнего файла - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь понять, как включить JavaScript извне, чтобы код печатался на странице.

Когда я вставляю JavaScript прямо в код страницы, он выводит «привет»

<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">document.write("hello");</script>
</body>
</html>

Однако, когда я помещаю тот же код во внешний файл, скажите «javascript.js» и включаю его (src) в html, он не печатает «привет»?

<html>
<head>
<title></title>
<script type="text/javascript" src="http://thewebsite.com/javascript.js"></script>
</head>
<body>
</body>
</html> 

Я пытаюсь понять, как заставить этот внешний файл JavaScript работать и печатать «привет». Как тогда работает XSS, если хакер включил в себя следующий тег, скажем textarea, чтобы вызвать свой вредоносный скрипт с вредоносного сервера?

<script type="text/javascript" src="http://thewebsite.com/javascript.js"></script>

Вот что в файле "javascript.js":

<script type="text/javascript">
document.write("hello");
</script>

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

Я подумал, что если включить JavaScript в качестве внешнего файла, следует ли печатать содержимое внешнего файла (например, «привет»), как если бы он был непосредственно вставлен в html-страницу?

Ответы [ 2 ]

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

Когда я вставляю JavaScript непосредственно в код страницы, он печатает «привет»

Исправить

Однако, когда я помещаю этот же код ввнешний файл говорит «javascript.js» и включает его (src) в html, который не печатает «привет»?

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

Проблема в том, что вы включили теги HTML-сценариев в файл JavaScript.Файлы JavaScript должны содержать только JavaScript.

Файл находится в том же домене, поэтому здесь не должна применяться одинаковая политика происхождения

Не применяется,Такая же политика происхождения просто запрещает JavaScript, работающему (не загруженному из), источнику A считывать данные из источника B. Поскольку данные включены в сам скрипт, они все равно будут доступны, даже если скрипт был загружен из источника B.

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

Я полагаю, что браузеры применяют политику, называемую Same Origin Policy, которая гарантирует, что JS из разных доменов не получает доступ к данным друг друга при загрузке на одной странице.Допустим, у вас есть объявление Google и в нем есть некоторый Javascript.Было бы нецелесообразно, чтобы скрипт в Google Ads мог получить доступ к данным на вашем сайте (наоборот, но, конечно, у вас всегда есть Google Ads или кнопка «Мне нравится» в качестве iFrame и, следовательно, в любом случае они наиболее аккуратно разделены.)

Если бы вы могли загрузить файл js как файл src в файл изображения, то, я полагаю, вы можете достичь того, что вы собираетесь. (Если я не ошибаюсь.)

Редактировать: Файл javascript не может быть предоставленкак вход в тег src img.Вы можете использовать его только как схему javascript:.

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