在我的网站注入Html

时间:2014-12-05 23:36:31

标签: php html code-injection

嗯,我有一个大问题:有人在我的index.php中插入HTML代码,而且我不知道如何插入代码:

<iframe src=**bad url was here** width=0 height=0 frameborder=0></iframe>

我已经尝试过这个来防止这个问题:

$_GET = Sanitize::filter($_GET);
$_POST = Sanitize::filter($_POST)

我的Sanitize类会过滤$ _gET和$ _POST中的所有内容,但问题会继续。

这是我的Sanitize文件:

abstract class Sanitize {

/**
 * Filter
 * 
 * @param  mixed $value
 * @param  array $modes
 * @return mixed
 * @static
 * @since  1.0
 */
    static public function filter($value, $modes = array('sql', 'html')) {

        if (!is_array($modes)) {
            $modes = array($modes);
        }

        if (is_string($value)) {
            foreach ($modes as $type) {
              $value = self::_doFilter($value, $type);
            }
            return $value;
        }

        foreach ($value as $key => $toSanatize) {
            if (is_array($toSanatize)) {
                $value[$key]= self::filter($toSanatize, $modes);
            } else {
                foreach ($modes as $type) {
                  $value[$key] = self::_doFilter($toSanatize, $type);
                }
            }
        }

        return $value;
    }

/**
 * DoFilter
 * 
 * @param  mixed $value
 * @param  array $modes
 * @return mixed
 * @static
 * @since  1.0
 */
    static protected function _doFilter($value, $mode) {

        switch ($mode) {
            case 'html':
                $value = strip_tags($value);
                $value = addslashes($value);
                $value = htmlspecialchars($value);
                break;

            case 'sql':
                $value = preg_replace(sql_regcase('/(from|select|insert|delete|where|drop table|show tables|#|\*| |\\\\)/'),'',$value);
                $value = trim($value);
                break;
        }

        return $value;
    }

}

有些文件插在我的public_html文件夹中,我不知道如何。

1 个答案:

答案 0 :(得分:0)

首先,杀死这个iframe

iframe[src="bad url was here"]{
  display: none;
}

然后更改密码并登录。