1

ローカルで作成した HTML がいくつかあり、それを HTML purifier で実行したいと考えています。これは完全に私が生成したものなので、XSS の脆弱性がないことはわかっています。purifier で実行しようとしていますが、何を試しても href='javascript:myFunc()' が解析されます。

私の現在の設定は次のとおりです。

$string = file_get_contents($myHTMLFile);
$schemes = array (
    'http' => true,
    'https' => true,
    'mailto' => true,
    'ftp' => true,
    'nntp' => true,
    'news' => true,
    'javascript' => true,
);
$config = HTMLPurifier_Config::createDefault();
$config->set('URL.AllowedSchemes', array($schemes));
$purifier = new HTMLPurifier($config);
$string = $purifier->purify($string);

これはまったく機能していません - すべての JavaScript が取り除かれています。

さまざまな HTML Purifier 構成設定をすべて調べましたが、必要なものが見つかりません。答えはありますか?

前もって感謝します

4

1 に答える 1

1

簡単な答え:HTMLPurifierを使用しないでください。代わりにHTMLTidyのようなものを使用してください。

より複雑な答え:javascriptを使用しないでください:URL; 代わりに、JavaScriptを使用するリンクにクラス属性をアタッチしてから、JavaScriptハンドラーにこのクラスを持つリンクを検索させ、JavaScriptコードをonClickハンドラーとしてアタッチします。

さらに複雑な答え:新しいJavaScript URIスキームを作成し、関数である固定文字列のみを受け入れるようにプログラムします。

于 2011-04-13T23:09:33.663 に答える