2016-01-17 3 views
1

Я просто проверяю, можно ли загрузить скрипт с помощью URL-адреса данных. К моему удивлению, в моем реальном Chromium это работает.Загрузка содержимого сценария из URL-адреса данных

загружает следующий документ: "Здравствуйте!"

<html> 
    <head> 
     <script type="text/javascript"> 
      var head = document.getElementsByTagName('head')[0]; 
      var script = document.createElement('script'); 
      script.type = 'text/javascript'; 
      script.src = 'data:text/javascript,alert("hello!");'; 
      head.appendChild(script); 
      head.removeChild(script); 
     </script> 
    </head> 
</html> 

... и окно, сообщающее всплывает.

Не так ли плохо, как eval()? Это позволяет компилировать произвольное содержимое (содержащее любые POSTed-содержимое или параметры GET) и «вставлять» его в текущий код!

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

+0

Связанный: http://stackoverflow.com/questions/9129666/whats-the-better-practice-eval-or-append-script –

ответ

1

Он действительно не отличается от eval(), так как он имеет почти такое же поведение. Однако в некоторых случаях eval() is not evil.

Смежные вопросы