我使用简单HTMLPurifier Tinymce WYSIWYG
。如果我不使用htmlspecialchars
,这将是开放的XSS Attack
呢?这是我在做什么
$detail = $purifier->purify($detail);
净化数据为textarea
。如果我用htmlspecialchars
,它去除所有基本的标签,以及这是不是用户友好的一个WYSIWYG
editor.But的问题是,这允许<script> tag
为好。
如果我改变conf setting
到
$config->set('ExtractStyleBlocks.1', true);
它不允许<
和>
为<script> tag
.Convert <
和>
的<script>
而已。不过它显示<p>This is paragraph</p>
<strong>This text is bold</strong>
和所以on.It不应该显示<p> and other simple tags
用户,但只有文字。
我怎样才能摆脱这个问题。
请您的时间help.Thanks。
编辑
这里是我的HTMLPurifier初始化
$config = HTMLPurifier_Config::createDefault();
//$config->set('ExtractStyleBlocks', true);
$config->set('HTML.ForbiddenElements', array('script','style','applet'));
$purifier = new HTMLPurifier($config);
从数据库中获取数据
while(mysqli_stmt_fetch($stmt1)){
$id=htmlspecialchars($id);
$title=htmlspecialchars($title);
$detail = $purifier->purify($detail);
$posts.="<div id='date_news'><div id='news_holder$id' class='news_holder'><h3 id='show_title'>".htmlspecialchars($title)."</h3>".$detail."</div>";
HTML为$detail
在数据库
<p><strong>Alu Vazi</strong></p>
<p>I love alu vazi with<script>alert("XSS")</script></p>
用户屏幕
铝花瓶
我爱ALU vazi与<script>
警报( “XSS”) </script>