Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверить ссылку на работоспособнось? (https://javascript.ru/forum/misc/3053-kak-proverit-ssylku-na-rabotosposobnos.html)

Oleg_777 13.03.2009 14:55

Как проверить ссылку на работоспособнось?
 
Вопрос в следующем: Должна получиться полноценная ссылка, если пользователь введет правельное кодовое слово начнется скачивание! А если пользователь ввел неправельное кодовое слово, то должна отдельно загрузиться небольшая страница и сказать что кодовое слово неверно!

Есть:

1) Есть кнопка "скачать"
2) Текстовое поле - "Text1"

т.е. пользователь вводит кодовое слово в "Text1" нажимает кнопку "скачать", если все правельно будет предложенно скачать файл, если кодовое слово неправельно, будет ошибка 404 (Неправельная ссылка, файл не существует)!

Вопрос: Как после нажатия кнопки "скачать" проверить ссылку на правильность, если правельная то качать файл, если нет, то загрузить отдельное окошко со страницей - Ошибка "кодовое слово неверно". Причем метод проверки не должен содержать правельное кодовое слово! Метод проверки должен заранее после нажатия кнопки "скачать" определить что ссылка не выдаст ошибку 404!

Например такой скрипт, как его довести до поставленной задачи:

Кодовое_слово - download

http://www.sayt.ru/Кодовое_слово/files.mp3

<script language="JavaScript">
var link1="http://www.sayt.ru/";
var files="/files.mp3";

function test1(form) {
if (form.text1.value == "")
alert("Кодовое слово!")
else
location.href=link1+form.text1.value+files;
}
</script>

<form name="first">
Введите:<br>
<input type="text" name="text1" maxlength="6" size="15">
<input type="button" name="button1" value="скачать" onClick="test1(this.form)">
</form>

Oleg_777 13.03.2009 16:25

Подскажите, плиз....

Treekci 13.03.2009 23:12

Попробуйте попробовать способ, описанный тут: http://www.machaon.ru/digest/www_boa...ages/9193.html

Oleg_777 14.03.2009 03:07

Что-то не работает! Есть еще предложения! Плиз...

Андрей Параничев 14.03.2009 03:45

Такого рода защита на JavaScript будет совершенно не действенна. Решайте серверными силами, если это возможно.

Treekci 14.03.2009 14:19

Цитата:

Сообщение от Андрей Параничев (Сообщение 14256)
Такого рода защита на JavaScript будет совершенно не действенна. Решайте серверными силами, если это возможно.

Почему не действенна?

Андрей Параничев 14.03.2009 15:01

Treekci,
Потому что все равно она раскрывает пользователю ссылку на конечный файл.

Treekci 14.03.2009 21:58

Если скрипт будет проверять, существует ли указанный файл, как он расскроет ссылку?

Gvozd 14.03.2009 22:28

Цитата:

Сообщение от Treekci
Если скрипт будет проверять, существует ли указанный файл, как он расскроет ссылку?

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

Treekci 14.03.2009 23:32

А каким образом "правильная ссылка" собралась в браузер попадать? =)

Gvozd 14.03.2009 23:52

Treekci,
может быть потому что вы решили ее проверить средствами браузера?)

Treekci 15.03.2009 00:13

Ну, если введенное слово будет верным, то да, он получит верную ссылку =) Иным путём он этого не добьётся...
Я на днях посмотрю и скажу, что я родить хочу =) Я себе представляю, что я хочу сделать, но из-за малого опыта пока не могу написать верный скрипт... Я посмотрю, как это делается и покажу свои глупые идеи =)

Oleg_777 15.03.2009 01:21

Все правильно! Браузер никак не узнает правильную ссылку пока не введешь правельное кодовое слово, а иначе запрос по ссылке будет выдовать ошибку 404 "Страница или файл не существует"! Можно узнать только методом подбора!

Treekci 15.03.2009 12:29

Вопрос из зала: что вы называете серверными силами? А то окажется потом, что мои идеи и есть эти страшные силы...
Предлагаю даже сделать интересней: я создам страницу использующую данный скрипт, а вы все проведете её тестирование =) Ваша цель: назвать мне название песни, которую я выложу =) Только, попрошу, без взломов сервера и метода потбора(если с подбором еще можно будет справится, то от взлома уж мне никак). А с моей страницей извращайтесь как можете =)

Gvozd 15.03.2009 13:07

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

--добавлено--
попробовал поигратся по вашей теме с объектом XMLHttpRequest , но ничего толкового не получил.
во перывх осел жутко матерится на мои попытки нестандартного использования.что и понятно(я пытался использовать xmlhttp.status до полного получения файла.)
короче, жутко получается, и не кросбрузерно.
под серверными же силами я подразумеваю, что ваш скрипт отправит запрос на серверный скрипт(например написанный на ПХП), и серверный скрипт сам проверит существование файла, и вернет результат проверки

Treekci 15.03.2009 13:41

Вот, я так подумал, а потом встал другой вопрос: а если человек начнет и тут колдовать, и скачает этот пхп-файл? Или можно от этого его защитить?

Gvozd 15.03.2009 13:52

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

Treekci 15.03.2009 14:23

Просто я с этим пока не сталкивался, поэтому точно не знаю, как это происходит...

Oleg_777 18.03.2009 21:03

Хоть как-то можно это сделать??? Или все так сложно!

Treekci 19.03.2009 00:00

Так, задам тогда два вопроса по теме:
var fso = new ActiveXObject("Scripting.FileSystemObject")
var fileobj = fso.GetFile(filepath)
var myfile = fileobj.OpenAsTextStream(mode)

Таким Макаром пытаюсь открыть файл. Ослик матерится, что вредоносный скрипт. если скрипт на сервере, он будет материться?
И есть запросить строку несуществующего txt-файла, что произойдет? (хотел сам проверить всё это, да времени никак нет).

Gvozd 19.03.2009 00:05

во первых ActiveXObject есть только в ослике.
и этот объект по своей сути не предназначен для работы в браузере.
поэтому осел и ругается
во вторых этот объект предназначен для работы с локальной(пользователя) файловой системой, и навряд ли им можно работаь по сети
Вывод: не годится, из-за своей сути и некросбраузерности

Treekci 19.03.2009 00:31

Тогда логичный вопрос: как прочитать первую строку файла X.txt на сервере?

Gvozd 19.03.2009 00:33

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

Treekci 19.03.2009 18:57

Цитата:

Сообщение от Gvozd (Сообщение 14661)
кхм.

Я только учусь, хоть и по кривому:(


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