0

作成しているJavaScriptベースのWebアプリにeval()を使用する必要があります。

その理由は、テキストとして保存され、後で使用する必要があるときにサイトで再利用できる独自の関数を作成できるようにするためです。jsFiddleの方針に沿って考えてください。

コードは実行されて評価されるか、スクリプトタグとして挿入されます。いずれにせよ、悪意のあるユーザーによるJavaScriptインジェクションに対してサイトを開いたままにします。そのため、送信されたコードをフィルタリングするか、ユーザーが別のユーザーのスクリプトを読み込んだときに、続行する前にユーザーが最初にスクリプトを読んだり確認したりする必要があるという警告メッセージを表示する予定です。

これまでのところ、次のキーワードでフィルタリング/警告することを検討しています。

eval
execScript

script

window.*
setInterval
setTimeout
alert
confirm
prompt

document.*
write
innerHTML
insertAdjacentHTML
createElement
appendChild
setAttribute

form.*
submit

XMLHttpRequest

jQuery.*
ajax

base64encode
base64decode

私はまだテストを開始していないので、これらは私の最初の考えにすぎません。

誰かがこれについて経験や意見を得ましたか?

ありがとう、デイブ

4

2 に答える 2

8

これを安全にする方法はありません。文字[]()+!{}を使用して、任意のJavascriptコードを作成できます。

http://patriciopalladino.com/blog/2012/08/09/non-alphanumeric-javascript.html

私の知る限り、jsFiddleは、別のドメインのiframe内でユーザー生成コードを実行することで機能します。入力フィルタリングは使用しません。

于 2012-10-02T22:34:51.533 に答える
5

これを行うことで、ほとんどすべてのフィルタリングを回避できます。Javascriptをサンドボックス化する必要があります。考えられるアプローチは次のとおりです。

于 2012-10-02T22:37:19.147 に答える