Показать сообщение отдельно
  #6 (permalink)  
Старый 28.10.2012, 18:26
Профессор
Отправить личное сообщение для BallsShaped Посмотреть профиль Найти все сообщения от BallsShaped
 
Регистрация: 14.09.2012
Сообщений: 162

Сообщение от dmitriymar
ну и если так -ничего не помешает запустить вредоносный через таймаут
Так нет, меня как раз волнует, что можно изменить нативные методы перед выполнением страницы.
Сообщение от DjDiablo
Думаю отличить нативную функция от скиптовой труда не составит.
Наивный:
var replaceNativeFunction = new function (){
  var functionList = [],
      originalList = [];

  function replaceNativeFunction( object, methodName, newMethod ){
    functionList.push( newMethod );
    originalList.push( object[ methodName ] );
    object[ methodName ] = newMethod;
  };

  replaceNativeFunction.getOriginal = function ( method ){
    var index = functionList.indexOf( method );
    return originalList[ index ];
  };

  replaceNativeFunction( Function.prototype, "toString", function ToString(){
      if( this.toString == ToString )
        return replaceNativeFunction.getOriginal( ToString ).call( replaceNativeFunction.getOriginal( this ) );
      return this.toString();
    } ); 

  return replaceNativeFunction;    
};

replaceNativeFunction( window, "alert", function newAlert( message ){
  var originalAlert = replaceNativeFunction.getOriginal( newAlert );
  originalAlert( message );
  originalAlert( "Trololo!!!" );
} );

alert( alert.toString() );

Последний раз редактировалось BallsShaped, 28.10.2012 в 20:23.
Ответить с цитированием