1、删除html注释;
2、删除script、link、object、embed、iframe、frame、frameset以及拥有on开头、包含网页特效:[^;]或expression的属性的标签;
3、删除css教程中的注释(防止用这个来欺骗删除expression表达式,不知道还有其他什么方法可以欺骗删除expression);
4、删除expression表达式;
php过滤危险html,代码如下:
- function fillter_html( $str ) {
-
- return preg_replace_callback(
-
- '/(<s*style[^>]*>)((?:(?!<s*/s*styles*>).)*)(<s*/s*styles*>)?/i',
- create_function('$str', 'return $str[1] . fillter_css($str[2]) . $str[3];'),
- preg_replace(
- array(
-
- '/<!--.*?-->/i',
-
- '/<s*(script|object|embed|link|i?frame(set)?)[^>]*>(.*?<s*/s*\1s*>)?/i',
-
- '/<[^>]+((on[a-z]+s*=|javascript:[^;"\']|expressions*()[^>]*)+>?/i',
- ),
- '',
- $str
- )
- );
- }
-
-
- function fillter_css( $str ) {
-
- return preg_replace(array('/(/*((?!*/).)**/|/*|*/)/i', '/expressions*((.*?))?|javascripts*:/i',), '', $str);
- }
|