完美

[学习|工作|博客|交流平台|完美起航]
 详情

UEditor如何防止xss注入

时间:[2017-05-26 15:25:52] 作者:[ admin ] 点击:[ 3929 ]

现在的富文本编辑器,都有xss注入漏洞,想请教一下,如何防止xss注入?markdown编辑器先不考虑

服务器端清除xss攻击

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = "UTF-8" [, bool $double_encode = true ]]] )

例子:

<?php
$str  =  "A 'quote' is <b>bold</b>" ;

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo  htmlentities ( $str );

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo  htmlentities ( $str ,  ENT_QUOTES );
?>
<?php
$str  =  "\x8F!!!" ;

// Outputs an empty string
echo  htmlentities ( $str ,  ENT_QUOTES ,  "UTF-8" );

// Outputs "!!!"
echo  htmlentities ( $str ,  ENT_QUOTES  |  ENT_IGNORE ,  "UTF-8" );
?>
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = "UTF-8" [, bool $double_encode = true ]]] )
<?php
$new  =  htmlspecialchars ( "<a href='test'>Test</a>" ,  ENT_QUOTES );
echo  $new ;  // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

还原显示可以使用htmlspecialchars_decode、html_entity_decode

string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )


<?php
$str  =  "<p>this -&gt; &quot;</p>\n" ;

echo  htmlspecialchars_decode ( $str );

// 注意,这里的引号不会被转换
echo  htmlspecialchars_decode ( $str ,  ENT_NOQUOTES );
?>

以上过程会输出

<p>this -> "</p>
<p>this -> &quot;</p>
string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = "UTF-8" ]] )
<?php
$orig  =  "I'll \"walk\" the <b>dog</b> now" ;

$a  =  htmlentities ( $orig );

$b  =  html_entity_decode ( $a );

echo  $a ;  // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo  $b ;  // I'll "walk" the <b>dog</b> now
?>


 4   3
标签:  UEditor xss注入 PHP
 相关评论