0

HTMLPURIFIER を実装しようとしていますが、浄化したい HTML をエコーアウトした後でも、
<img src="kay.JPG" alt="my picture" />表示されるコンテンツの一部として表示されますが、画像を表示するためのものです。私は何を間違っていますか?

     function readmore_about_cs($row, $id) 

     {    
            $config = HTMLPurifier_Config::createDefault();
            // configuration goes here:
            $config->set('Core.Encoding', 'UTF-8'); 
            $config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); 
            $purifier = new HTMLPurifier($config);

     if (isset($_GET['readmore'])) { 
     $nomore = ($row['about_church_of_christ_content']);
     $pure_html = $purifier->purify($nomore);
     echo htmlspecialchars($pure_html);
     } 
     else 
     {                         
     if (strlen(trim($row['about_church_of_christ_content'])) > 350) 
     {
     $shortText = substr(trim($row['about_church_of_christ_content']), 0, 650); 
     $shortText .= '..<a href="http://127.0.0.1/church/about_cs.php?id='.$id.'&readmore=1">More</a>'; 
     $pure_html = $purifier->purify($shortText);
     echo htmlspecialchars($shortText) ;
     }
    }
    }    
4

1 に答える 1

0

あなたに起こっていることは、HTMLPurifier のデフォルトの動作です。基本的に「src」属性を介した XSS 攻撃を許可しているため、次の解決策ではセキュリティに穴が開くことに注意してください。

コードに追加する必要があるのは次のとおりです。

// configuration goes here:
$config->set('HTML.Allowed','img[src], img[alt]');
于 2012-06-23T07:06:52.273 に答える