jsの方で
document.createElement('script')という風にして
特定のDIVタグのidにjsファイルを設定しています。
そこでなんですが、
document.createElement('script')する際に
外部のjsファイルを読み込むのですが
もしも、そのjsにalertやdocument.writeなど
書かれていると、実行されてしまいます。
なので、document.createElement('script')する際の
ファイルの中身を参照して、該当のキーワード
(alertやdocument.writeなどのscript実行部分)がある場合に
このjsはNGですみたいな、挙動をjavascriptで行いたいのですが
可能でしょうか?
説明が、大雑把過ぎるかも、知れませんが
皆様のお力をお貸し下さい。
コメント(3件)
1.スクリプトとしてではなく、テキストとして読み込んで中身をチェック。
2.問題があれば警告表示、無ければスクリプトとして読み込み。
という流れだと思うけど、このような心配があるような状況では、
単純にalertなどの単語を調べるだけで話を終わらせられるはずも無いと思うので、
コメント欄。
どうしてそのような状況になっているのか判りませんが、
事前に人力(人力検索じゃないよ。笑)で、
読み込むスクリプトの内容確認してからサーバにアップするべきだと思う。
1.
テキストを読んでブラックリストで弾くだけだとこういうこと↓をされてしまうと役に立たない。
http://d.hatena.ne.jp/hasegawayosuke/20090603/p1
2.
スクリプトが自分のサーバーにあるなら XMLHttpRequest して responseText を
(function() {
var DOCUMENT_WRITE = window.document.write, ALERT = window.alert;
window.document.write = window.document.write = window.alert = function(){};
と
window.document.write = DOCUMENT_WRITE;
window.alert = ALERT;
})();
で囲んで eval するということもできるけど、そうやって保存しておいた変数を使われるかもしれないし、
他の悪いことをされたり (cookie を盗られたり) するかもしれない。
3.
他人のサーバーにあるスクリプトは、API として提供されているもので無い限りは基本的には使ってはいけない。
最近ですが、json.org の json2.js を直接読んでたサイトがあって json.org のトラフィックが増加しすぎたため、
json.org が警告を出すようにしたという話がありました。
信頼できないスクリプトを読み込まないことが一番だと思いますよ。
今回、自分のサーバーで他の人が作った
jsファイルを別サーバに呼びに行かないといけなくて
出来るのであれば、中身のチェックをしようかと思いました。
やはり、javascriptファイルの中身のチェックは
難しいですね・・