0

HTMLPurifier にいくつかのテストを行って、すべてが期待どおりに機能することを確認しています。http://ha.ckers.org/xss.htmlの例を使用しています。私がコード化したものはすべて「正しい」と思いますが、xxs の例の 1 つをそのまま渡すことができます。誰でも私を助けることができますか?

関数を宣言し、データを処理するページ common1.php を次に示します。

$config = HTMLPurifier_Config::createDefault();

// configuration goes here:
$config->set('Core.Encoding', 'UTF-8'); // replace with your encoding
$config->set('HTML.Doctype', 'XHTML 1.0 Strict'); // replace with your doctype

function purify($data){
    $purifier = new HTMLPurifier($config);
    // untrusted input HTML
    $pure_html = htmlspecialchars($purifier->purify($data));

    return $data;
 }
?>

そして、xxs を渡そうとする (そして 0_o を成功させる) デバッグ スクリプトを次に示します。

<?php
    include('common1.php');

    $t = "<IMG \"\"\"><SCRIPT>alert(\"XSS\")</SCRIPT>\">";
    echo purify($t);
?>
4

1 に答える 1

3

未精製のマークアップを返しています。return ステートメントを変更します。

 function purify($data){
    $purifier = new HTMLPurifier($config);
    // untrusted input HTML
    $pure_html = htmlspecialchars($purifier->purify($data));

    return $pure_html;
 }
于 2011-05-09T22:15:11.313 に答える