LoginSignup
9
9

More than 5 years have passed since last update.

evalを使わずに任意のJavaScriptコードが実行できちゃう小ネタ

Last updated at Posted at 2015-07-04

良いか悪いかで言ったら、明らかに良くないんだろうけど、できてしまうんですねこれ。

よくない.js
var script = document.createElement( 'script' );

script.type = 'text/javascript';
script.innerHTML = "for(var i=0; i< 10; i++){console.log(i);}";

document.querySelector( 'body' ).appendChild(script);

yokunai.png

セキュリティは詳しくないからよく知らないんだけど、WebSocketとか使ってるアプリでエスケープが甘いと悪いことされそうな予感。

追記

CSPを使うと、ちゃんとブロックされるようです。 @mpyw さんに教えていただきました。ありがとうございます。詳しくはコメント欄をご覧ください

ただし、CSPはインラインスクリプトや外部スクリプトの読み込みを禁止しますので、システムの実装に大きな制約がかかることになります。使う際はご留意ください
参考記事: 弊社のホームページにContent Security Policy(CSP)を導入しました

9
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9