Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: "защита" (js)
 
 автор: sl1p   (28.09.2008 в 14:47)   письмо автору
 
 

сколько не думал над этим никак в голову ничего не приходит... помогите:)

есть функция function sm(whom,msg){} которая должна работать исключительно "когда мне нужно", тоесть при нажатии на кнопку или ещё чтото и использование её както по другому крайне не желательно:)

тоесть при вводе в адресную строку типа javascript:sm('s','s'); получается не хорошо..)

как можно защититься от такого?

  Ответить  
 
 автор: Lelik   (28.09.2008 в 15:04)   письмо автору
 
   для: sl1p   (28.09.2008 в 14:47)
 

может попробовать применить функцию caller?

  Ответить  
 
 автор: sl1p   (28.09.2008 в 15:10)   письмо автору
 
   для: Lelik   (28.09.2008 в 15:04)
 

хм а по подробней можно?:)

  Ответить  
 
 автор: Lelik   (28.09.2008 в 15:12)   письмо автору
586.2 Кб
 
   для: sl1p   (28.09.2008 в 15:10)
 

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

  Ответить  
 
 автор: sl1p   (28.09.2008 в 15:17)   письмо автору
 
   для: Lelik   (28.09.2008 в 15:12)
 

спасибо:)
Caller не рекомендуется с JavaScript 1.3 и больше не используется
опечалило :D
но попробую юзнуть)

  Ответить  
 
 автор: sl1p   (28.09.2008 в 16:10)   письмо автору
 
   для: sl1p   (28.09.2008 в 15:17)
 

только вот всё равно не пойму в чём её смысл.. тоесть если функция была вызвана какойто функцией тогда всё ок, если же извне функции то sum.caller = null

ну например так:

function sum(a, b) {
alert(sum.caller);
return a + b;
}
function test(){
sum(6,6);
}

но что тогда мешает сделать так: javascript:test();

объясните кто шарит)

  Ответить  
 
 автор: ddhvvn   (28.09.2008 в 16:18)   письмо автору
 
   для: sl1p   (28.09.2008 в 16:10)
 

>только вот всё равно не пойму в чём её смысл..

Вы инфу читали?

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

Если свойство caller используется в строковом контексте, то результат является таким же, 
как functionname.toString, т.е., декомпилированный текст функции выводится на дисплей. 


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

  Ответить  
 
 автор: sl1p   (28.09.2008 в 16:29)   письмо автору
 
   для: ddhvvn   (28.09.2008 в 16:18)
 

та сидел же проверял, всё равно можно через адр. строку вызвать.(

  Ответить  
 
 автор: ddhvvn   (28.09.2008 в 16:40)   письмо автору
 
   для: sl1p   (28.09.2008 в 16:29)
 

А точно!
Caller работает только при вызове из другой функции...

Я не пойму че вы заморачиваетесь? Че там такого сверхсуперособенного? ))

Понимаете, если можно вызвать функцию, то ее можно вызвать независимо от того, как это сделано.
Конечно, можно скажем, сделать какой-нибудь флаг, и когда Вам нужна функция - вызвать ее с этим флагом.
Но Вы не запретите точно также сделать вызов фукнции с этим флагом из адресной строки! =)

  Ответить  
 
 автор: ddhvvn   (28.09.2008 в 15:05)   письмо автору
 
   для: sl1p   (28.09.2008 в 14:47)
 

Че за ужас? Зачем обычный пользователь будет вводить это в адресную строку? ))

  Ответить  
 
 автор: sl1p   (28.09.2008 в 15:09)   письмо автору
 
   для: ddhvvn   (28.09.2008 в 15:05)
 

ну а мало ли) например вконтакте какойто умник вывесил видео где любой может лупом добавить n-ое количество друзей xD

  Ответить  
 
 автор: Lelik   (28.09.2008 в 16:47)   письмо автору
 
   для: sl1p   (28.09.2008 в 14:47)
 

есть ещё одно решение:

document.onclick = function(e) {
    var isGecko = !document.attachEvent && document.addEventListener || self.opera;
    var oTarget = isGecko ? e.target : event.srcElement;
    if(oTarget.id != "need_id" ){
        return;
    }
    else {
        тут уже сама функция
    }
}

  Ответить  
 
 автор: sl1p   (28.09.2008 в 18:39)   письмо автору
 
   для: Lelik   (28.09.2008 в 16:47)
 

эх спасибо..:)

но пришлось чтобы не долбить себе мозг всё своё переписывать)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования