質問: ユーザーアップロードされたhtml5キャンバスアニメーションを徹底的にフィルタリングするために、JS w/PHPにコンパイルされたJSのWebアプリケーションのプログラミング言語を作成しますか? A persistent follow-up of an admittedly similar question I had asked: [What security restrictions should be implemented in allowing a user to upload a Javascript file that directs canvas animation?](https://stackoverflow.com/questions/5766627/what-security-restrictions-should-be-implemented-in-allowing-a-user-to-upload-a) 私はJSがまともであることを知っていると思っていると思うのですが、XSSのすべての例で共通の文字が表示されています。私は安全で健全な、合理的にプログラムされたシステムをバイパスできる良いXSSの例が欠けている。私は人々に自分のサイトにhtml5キャンバスの作品をアップロードさせたい。このようなサイトはまだありますか?人々はこれについていつも怖がっているようですが、あなた自身のために楽しいことをしたいと思ったら、サーバーに何か起きたら、それはちょうどアニメーションサイトであり、情報は爆発のように周囲に広がっています。私は彼らにサインアップしないよう伝えます。 私がJSで書かれた私のプログラミング言語のためのJSを使ってIDEとして機能する単一のテキストエリアフォームフィールドを許可し、JSにコンパイルする前にユーザーの構文の文字列置換、フィルタリング、および検証をPHPでエコーする私はそのコンテンツを主催することができますか?サーバー側も考慮して、どのように組み合わせたすべての考慮事項をバイパスできるかを教えてください: * JavaScriptが無効になっている場合、POSTが通過しないようにし、ユーザーセッションを常に追跡します。 * クラスを名前空間にするため、関数とメソッドにEXAMPLEというプレフィックスのみを付けることができます。 * インスタンスを作成する * 私のJS Frameworkを外部(ブラウザでは不変)のJSファイルに保存します。これは受け付けるフォーム内の単一のtextareaフィールドのページの先頭にある必要があります。また、サーバー生成のキーそれはそれに続く必要があります。コンパイルされたユーザーがアップロードしたキャンバスのゲーム/アニメーション(1ページにつき1つのみ)をホストするページで、サーバーは残りの部分をエコーする前に正しいJSファイル名文字列を確認します。 * 外部スクリプト呼び出しはありません!クライアントとサーバーの文字列置換 * 英数字、ダッシュ、アスタリックのみを許可する * アラート、eval、ウィンドウ、XMLHttpRequest、プロトタイピング、クッキー、明らかなものを削除する。ネイティブJSの予約語や構文はありません。 * IDEに役立つ他の外部JSファイルを難読化し、縮小し、プログラミング言語の一意のCanvas APIメソッドを認識させる。 * Windowがアンロードされると、POSTでサーバーがチェックする2つの動的生成フォームフィールドに外部JSコードを格納します。すべての元のコードは、フィルタリングの目的で完全にDBに登録されます。 * 厳密な変数命名規則( 'example-square1-length *PROPERTY* '、 'example-circle-spin *方法*') * Copy/Paste Disabled、setIntervalは、ユーザが有効になっているかどうかを常にチェックします。そうであれば、ブロックをデータベースにトリガーし、直ちにwindow.locationを変更し、POSTを介してセッションIDをチェックして、JSがその期間内に無効になった場合に確認します。 つまり、私はそれをすることができますか? HEXやASCIIを使用することができない場合、どのようにして害を及ぼすことができますか?
回答: htmlprufier consists of **thousands** of regular expressions that attempt "purify" html into a safe subset that is immune to xss. This project is bypassesed very few months, because it isn't nearly complex enough to address the problem of XSS. XSSの複雑さを理解していますか? JavaScriptが文字または数字なしに存在できることをご存知ですか? さて、私が試してみたいのは、IEでレンダリングされている `UTF-7` と言ってもわからないエンコードを変更するメタタグを挿入することです。このutf-7 enocded htmlの中にはjavascriptが含まれています。あなたはそれを考えましたか?まあ、 **10万**と**数百万**の間に、私が考えていなかった他のベクターがあるかどうかを推測します。 XSSのチートシートは、私の祖父母がそれに耐えられるほど古いものです。 最新バージョンがあります。 (あなたが根本的に安全でないことをしようとしているため、あなたはハッキングされるでしょう。)